Package org.jaxen.dom

Class NamespaceNode

java.lang.Object
org.jaxen.dom.NamespaceNode
All Implemented Interfaces:
Node

public class NamespaceNode extends Object implements Node
Extension DOM2/DOM3 node type for a namespace node.

This class implements the DOM2 and DOM3 Node interface to allow namespace nodes to be included in the result set of an XPath selectNodes operation, even though DOM does not model namespaces in scope as separate nodes.

While all of the DOM2 methods are implemented with reasonable defaults, there will be some unexpected surprises, so users are advised to test for NamespaceNodes and filter them out from the result sets as early as possible.

  1. The getNodeType() method returns NAMESPACE_NODE, which is not one of the usual DOM2 node types. Generic code may fall unexpectedly out of switch statements, for example.
  2. The getOwnerDocument() method returns the owner document of the parent node, but that owner document will know nothing about the namespace node.
  3. The isSupported(java.lang.String, java.lang.String) method always returns false.
  4. The DOM3 methods sometimes throw UnsupportedOperationException. They're here only to allow this class to be compiled with Java 1.5. Do not call or rely on them.

All attempts to modify a NamespaceNode will fail with a DOMException (DOMException.NO_MODIFICATION_ALLOWED_ERR).

Author:
David Megginson, Elliotte Rusty Harold
See Also:
  • Field Details

  • Constructor Details

    • NamespaceNode

      public NamespaceNode(Node parent, String name, String value)
      Create a new NamespaceNode.
      Parameters:
      parent - the DOM node to which the namespace is attached
      name - the namespace prefix
      value - the namespace URI
  • Method Details

    • getNodeName

      public String getNodeName()
      Get the namespace prefix.
      Specified by:
      getNodeName in interface Node
      Returns:
      the namespace prefix, or "" for the default namespace
    • getNodeValue

      public String getNodeValue()
      Get the namespace URI.
      Specified by:
      getNodeValue in interface Node
      Returns:
      the namespace URI
    • setNodeValue

      public void setNodeValue(String value) throws DOMException
      Change the namespace URI (always fails).
      Specified by:
      setNodeValue in interface Node
      Parameters:
      value - the new URI
      Throws:
      DOMException - always
    • getNodeType

      public short getNodeType()
      Get the node type.
      Specified by:
      getNodeType in interface Node
      Returns:
      always NAMESPACE_NODE.
    • getParentNode

      public Node getParentNode()
      Get the parent node.

      This method returns the element that was queried for Namespaces in effect, not necessarily the actual element containing the Namespace declaration.

      Specified by:
      getParentNode in interface Node
      Returns:
      the parent node (not null)
    • getChildNodes

      public NodeList getChildNodes()
      Get the list of child nodes.
      Specified by:
      getChildNodes in interface Node
      Returns:
      an empty node list
    • getFirstChild

      public Node getFirstChild()
      Get the first child node.
      Specified by:
      getFirstChild in interface Node
      Returns:
      null
    • getLastChild

      public Node getLastChild()
      Get the last child node.
      Specified by:
      getLastChild in interface Node
      Returns:
      null
    • getPreviousSibling

      public Node getPreviousSibling()
      Get the previous sibling node.
      Specified by:
      getPreviousSibling in interface Node
      Returns:
      null
    • getNextSibling

      public Node getNextSibling()
      Get the next sibling node.
      Specified by:
      getNextSibling in interface Node
      Returns:
      null
    • getAttributes

      public NamedNodeMap getAttributes()
      Get the attribute nodes.
      Specified by:
      getAttributes in interface Node
      Returns:
      null
    • getOwnerDocument

      public Document getOwnerDocument()
      Get the owner document.
      Specified by:
      getOwnerDocument in interface Node
      Returns:
      the owner document of the parent node
    • insertBefore

      public Node insertBefore(Node newChild, Node refChild) throws DOMException
      Insert a new child node (always fails).
      Specified by:
      insertBefore in interface Node
      Parameters:
      newChild - the node to add
      refChild - ignored
      Returns:
      never
      Throws:
      DOMException - always
      See Also:
    • replaceChild

      public Node replaceChild(Node newChild, Node oldChild) throws DOMException
      Replace a child node (always fails).
      Specified by:
      replaceChild in interface Node
      Parameters:
      newChild - the node to add
      oldChild - the child node to replace
      Returns:
      never
      Throws:
      DOMException - always
      See Also:
    • removeChild

      public Node removeChild(Node oldChild) throws DOMException
      Remove a child node (always fails).
      Specified by:
      removeChild in interface Node
      Parameters:
      oldChild - the child node to remove
      Returns:
      never
      Throws:
      DOMException - always
      See Also:
    • appendChild

      public Node appendChild(Node newChild) throws DOMException
      Append a new child node (always fails).
      Specified by:
      appendChild in interface Node
      Parameters:
      newChild - the node to add
      Returns:
      never
      Throws:
      DOMException - always
      See Also:
    • hasChildNodes

      public boolean hasChildNodes()
      Test for child nodes.
      Specified by:
      hasChildNodes in interface Node
      Returns:
      false
    • cloneNode

      public Node cloneNode(boolean deep)
      Create a copy of this node.
      Specified by:
      cloneNode in interface Node
      Parameters:
      deep - make a deep copy (no effect, since namespace nodes don't have children).
      Returns:
      a new copy of this namespace node
    • normalize

      public void normalize()
      Normalize the text descendants of this node.

      This method has no effect, since namespace nodes have no descendants.

      Specified by:
      normalize in interface Node
    • isSupported

      public boolean isSupported(String feature, String version)
      Test if a DOM2 feature is supported. (None are.)
      Specified by:
      isSupported in interface Node
      Parameters:
      feature - the feature name
      version - the feature version
      Returns:
      false
    • getNamespaceURI

      public String getNamespaceURI()
      Get the namespace URI of this node.

      Namespace declarations are not themselves Namespace-qualified.

      Specified by:
      getNamespaceURI in interface Node
      Returns:
      null
    • getPrefix

      public String getPrefix()
      Get the namespace prefix of this node.

      Namespace declarations are not themselves namespace-qualified.

      Specified by:
      getPrefix in interface Node
      Returns:
      null
      See Also:
    • setPrefix

      public void setPrefix(String prefix) throws DOMException
      Change the namespace prefix of this node (always fails).
      Specified by:
      setPrefix in interface Node
      Parameters:
      prefix - the new prefix
      Throws:
      DOMException - always thrown
    • getLocalName

      public String getLocalName()
      Get the XPath name of the namespace node;; i.e. the namespace prefix.
      Specified by:
      getLocalName in interface Node
      Returns:
      the namespace prefix
    • hasAttributes

      public boolean hasAttributes()
      Test if this node has attributes.
      Specified by:
      hasAttributes in interface Node
      Returns:
      false
    • hashCode

      public int hashCode()
      Generate a hash code for a namespace node.
      Overrides:
      hashCode in class Object
      Returns:
      a hash code for this node
    • equals

      public boolean equals(Object o)
      Test for equivalence with another object.

      Two Namespace nodes are considered equivalent if their parents, names, and values are equal.

      Overrides:
      equals in class Object
      Parameters:
      o - the object to test for equality
      Returns:
      true if the object is equivalent to this node, false otherwise
    • getBaseURI

      public String getBaseURI()
      Return the base URI of the document containing this node. This only works in DOM 3.
      Specified by:
      getBaseURI in interface Node
      Returns:
      null
    • compareDocumentPosition

      public short compareDocumentPosition(Node other) throws DOMException
      Compare relative position of this node to another nbode. (Always fails). This method is included solely for compatibility with the superclass.
      Specified by:
      compareDocumentPosition in interface Node
      Parameters:
      other - the node to compare to
      Returns:
      never
      Throws:
      DOMException - NOT_SUPPORTED_ERR
    • getTextContent

      public String getTextContent()
      Return the namespace URI.
      Specified by:
      getTextContent in interface Node
      Returns:
      the namespace URI
      See Also:
    • setTextContent

      public void setTextContent(String textContent) throws DOMException
      Change the value of this node (always fails). This method is included solely for compatibility with the superclass.
      Specified by:
      setTextContent in interface Node
      Parameters:
      textContent - the new content
      Throws:
      DOMException - always
    • isSameNode

      public boolean isSameNode(Node other)
      Returns true if and only if this object represents the same XPath namespace node as the argument; that is, they have the same parent, the same prefix, and the same URI.
      Specified by:
      isSameNode in interface Node
      Parameters:
      other - the node to compare to
      Returns:
      true if this object represents the same XPath namespace node as other; false otherwise
    • lookupPrefix

      public String lookupPrefix(String namespaceURI)
      Return the prefix bound to this namespace URI within the scope of this node.
      Specified by:
      lookupPrefix in interface Node
      Parameters:
      namespaceURI - the URI to find a prefix binding for
      Returns:
      a prefix matching this namespace URI
      Throws:
      UnsupportedOperationException - in DOM 2
    • isDefaultNamespace

      public boolean isDefaultNamespace(String namespaceURI)
      Return true if the specified URI is the default namespace in scope (always fails). This method is included solely for compatibility with the superclass.
      Specified by:
      isDefaultNamespace in interface Node
      Parameters:
      namespaceURI - the URI to check
      Returns:
      never
      Throws:
      UnsupportedOperationException - always
    • lookupNamespaceURI

      public String lookupNamespaceURI(String prefix)
      Return the namespace URI mapped to the specified prefix within the scope of this namespace node.
      Specified by:
      lookupNamespaceURI in interface Node
      Parameters:
      prefix - the prefix to search for
      Returns:
      the namespace URI mapped to this prefix
      Throws:
      UnsupportedOperationException - in DOM 2
    • isEqualNode

      public boolean isEqualNode(Node arg)
      Returns true if this object binds the same prefix to the same URI. That is, this object has the same prefix and URI as the argument.
      Specified by:
      isEqualNode in interface Node
      Parameters:
      arg - the node to compare to
      Returns:
      true if this object has the same prefix and URI as the argument; false otherwise
    • getFeature

      public Object getFeature(String feature, String version)
      Returns the value of the requested feature. Always returns null.
      Specified by:
      getFeature in interface Node
      Returns:
      null
    • setUserData

      public Object setUserData(String key, Object data, UserDataHandler handler)
      Associates an object with a key.
      Specified by:
      setUserData in interface Node
      Parameters:
      key - the key by which the data will be retrieved
      data - the object to store with the key
      handler - ignored since namespace nodes cannot be imported, cloned, or renamed
      Returns:
      the value previously associated with this key; or null if there isn't any such previous value
    • getUserData

      public Object getUserData(String key)
      Returns the user data associated with the given key.
      Specified by:
      getUserData in interface Node
      Parameters:
      key - the lookup key
      Returns:
      the object associated with the key; or null if no such object is available