jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/utils/DOM2Helper.java
changeset 45505 ca0e16b2d5d6
parent 45504 ea7475564d07
parent 45495 8f5dd0fb0a6d
child 45506 790c716da86b
equal deleted inserted replaced
45504:ea7475564d07 45505:ca0e16b2d5d6
     1 /*
       
     2  * reserved comment block
       
     3  * DO NOT REMOVE OR ALTER!
       
     4  */
       
     5 /*
       
     6  * Licensed to the Apache Software Foundation (ASF) under one or more
       
     7  * contributor license agreements.  See the NOTICE file distributed with
       
     8  * this work for additional information regarding copyright ownership.
       
     9  * The ASF licenses this file to You under the Apache License, Version 2.0
       
    10  * (the "License"); you may not use this file except in compliance with
       
    11  * the License.  You may obtain a copy of the License at
       
    12  *
       
    13  *      http://www.apache.org/licenses/LICENSE-2.0
       
    14  *
       
    15  * Unless required by applicable law or agreed to in writing, software
       
    16  * distributed under the License is distributed on an "AS IS" BASIS,
       
    17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       
    18  * See the License for the specific language governing permissions and
       
    19  * limitations under the License.
       
    20  */
       
    21 
       
    22 package com.sun.org.apache.xml.internal.serializer.utils;
       
    23 
       
    24 import java.io.IOException;
       
    25 
       
    26 import javax.xml.parsers.DocumentBuilder;
       
    27 import javax.xml.parsers.DocumentBuilderFactory;
       
    28 import javax.xml.parsers.ParserConfigurationException;
       
    29 import javax.xml.transform.TransformerException;
       
    30 
       
    31 import org.w3c.dom.Attr;
       
    32 import org.w3c.dom.Document;
       
    33 import org.w3c.dom.Element;
       
    34 import org.w3c.dom.Node;
       
    35 
       
    36 import org.xml.sax.InputSource;
       
    37 
       
    38 /**
       
    39  * This class provides a DOM level 2 "helper", which provides services currently
       
    40  * not provided be the DOM standard.
       
    41  *
       
    42  * This class is a copy of the one in com.sun.org.apache.xml.internal.utils.
       
    43  * It exists to cut the serializers dependancy on that package.
       
    44  *
       
    45  * The differences from the original class are:
       
    46  * it doesn't extend DOMHelper, not depricated,
       
    47  * dropped method isNodeAfter(Node node1, Node node2)
       
    48  * dropped method parse(InputSource)
       
    49  * dropped method supportSAX()
       
    50  * dropped method setDocument(doc)
       
    51  * dropped method checkNode(Node)
       
    52  * dropped method getDocument()
       
    53  * dropped method getElementByID(String id, Document doc)
       
    54  * dropped method getParentOfNode(Node node)
       
    55  * dropped field Document m_doc;
       
    56  * made class non-public
       
    57  *
       
    58  * This class is not a public API, it is only public because it is
       
    59  * used in com.sun.org.apache.xml.internal.serializer.
       
    60  *
       
    61  * @xsl.usage internal
       
    62  */
       
    63 public final class DOM2Helper
       
    64 {
       
    65 
       
    66   /**
       
    67    * Construct an instance.
       
    68    */
       
    69   public DOM2Helper(){}
       
    70 
       
    71   /**
       
    72    * Returns the local name of the given node, as defined by the
       
    73    * XML Namespaces specification. This is prepared to handle documents
       
    74    * built using DOM Level 1 methods by falling back upon explicitly
       
    75    * parsing the node name.
       
    76    *
       
    77    * @param n Node to be examined
       
    78    *
       
    79    * @return String containing the local name, or null if the node
       
    80    * was not assigned a Namespace.
       
    81    */
       
    82   public String getLocalNameOfNode(Node n)
       
    83   {
       
    84 
       
    85     String name = n.getLocalName();
       
    86 
       
    87     return (null == name) ? getLocalNameOfNodeFallback(n) : name;
       
    88   }
       
    89 
       
    90   /**
       
    91    * Returns the local name of the given node. If the node's name begins
       
    92    * with a namespace prefix, this is the part after the colon; otherwise
       
    93    * it's the full node name.
       
    94    *
       
    95    * This method is copied from com.sun.org.apache.xml.internal.utils.DOMHelper
       
    96    *
       
    97    * @param n the node to be examined.
       
    98    *
       
    99    * @return String containing the Local Name
       
   100    */
       
   101   private String getLocalNameOfNodeFallback(Node n)
       
   102   {
       
   103 
       
   104     String qname = n.getNodeName();
       
   105     int index = qname.indexOf(':');
       
   106 
       
   107     return (index < 0) ? qname : qname.substring(index + 1);
       
   108   }
       
   109 
       
   110   /**
       
   111    * Returns the Namespace Name (Namespace URI) for the given node.
       
   112    * In a Level 2 DOM, you can ask the node itself. Note, however, that
       
   113    * doing so conflicts with our decision in getLocalNameOfNode not
       
   114    * to trust the that the DOM was indeed created using the Level 2
       
   115    * methods. If Level 1 methods were used, these two functions will
       
   116    * disagree with each other.
       
   117    * <p>
       
   118    * TODO: Reconcile with getLocalNameOfNode.
       
   119    *
       
   120    * @param n Node to be examined
       
   121    *
       
   122    * @return String containing the Namespace URI bound to this DOM node
       
   123    * at the time the Node was created.
       
   124    */
       
   125   public String getNamespaceOfNode(Node n)
       
   126   {
       
   127     return n.getNamespaceURI();
       
   128   }
       
   129 
       
   130   /** Field m_useDOM2getNamespaceURI is a compile-time flag which
       
   131    *  gates some of the parser options used to build a DOM -- but
       
   132    * that code is commented out at this time and nobody else
       
   133    * references it, so I've commented this out as well. */
       
   134   //private boolean m_useDOM2getNamespaceURI = false;
       
   135 }