Package net.sf.saxon.dom
Class NodeOverNodeInfo
- java.lang.Object
-
- net.sf.saxon.dom.NodeOverNodeInfo
-
- All Implemented Interfaces:
org.w3c.dom.Node
- Direct Known Subclasses:
AttrOverNodeInfo
,DocumentOverNodeInfo
,ElementOverNodeInfo
,PIOverNodeInfo
,TextOverNodeInfo
public abstract class NodeOverNodeInfo extends java.lang.Object implements org.w3c.dom.Node
This class implements the DOM Node interface as a wrapper around a Saxon NodeInfo object.The class provides read-only access to the tree; methods that request updates all fail with an UnsupportedOperationException.
-
-
Field Summary
Fields Modifier and Type Field Description protected NodeInfo
node
-
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
-
-
Constructor Summary
Constructors Constructor Description NodeOverNodeInfo()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description org.w3c.dom.Node
appendChild(org.w3c.dom.Node newChild)
Adds the nodenewChild
to the end of the list of children of this node.org.w3c.dom.Node
cloneNode(boolean deep)
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.short
compareDocumentPosition(org.w3c.dom.Node other)
Compare the position of the (other) node in document order with the reference node (this node).protected static void
disallowUpdate()
Internal method used to indicate that update operations are not allowedboolean
equals(java.lang.Object obj)
The equals() method returns true for two Node objects that represent the same conceptual DOM Node.org.w3c.dom.NamedNodeMap
getAttributes()
Return aNamedNodeMap
containing the attributes of this node (if it is anElement
) ornull
otherwise.java.lang.String
getBaseURI()
Get the base URI for the node.org.w3c.dom.NodeList
getChildNodes()
Return aNodeList
that contains all children of this node.java.lang.Object
getFeature(java.lang.String feature, java.lang.String version)
Get a feature of this node.org.w3c.dom.Node
getFirstChild()
Get first childorg.w3c.dom.Node
getLastChild()
Get last childjava.lang.String
getLocalName()
Get the local name of this node, following the DOM rulesjava.lang.String
getNamespaceURI()
The namespace URI of this node, ornull
if it is unspecified.org.w3c.dom.Node
getNextSibling()
Get next sibling nodejava.lang.String
getNodeName()
Get the name of this node, following the DOM rulesshort
getNodeType()
Get the type of this node (node kind, in XPath terminology).java.lang.String
getNodeValue()
Get the node value (as defined in the DOM).org.w3c.dom.Document
getOwnerDocument()
Return theDocument
object associated with this node.org.w3c.dom.Node
getParentNode()
Find the parent node of this node.java.lang.String
getPrefix()
The namespace prefix of this node, ornull
if it is unspecified.org.w3c.dom.Node
getPreviousSibling()
Get the previous sibling of the nodejava.lang.String
getTextContent()
Get the text content of a node.NodeInfo
getUnderlyingNodeInfo()
Get the Saxon NodeInfo object representing this nodejava.lang.Object
getUserData(java.lang.String key)
Get user data associated with this node.boolean
hasAttributes()
Returns whether this node has any attributes.boolean
hasChildNodes()
Determine whether the node has any children.int
hashCode()
Return a hashCodeorg.w3c.dom.Node
insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild)
Insert the nodenewChild
before the existing child noderefChild
.boolean
isDefaultNamespace(java.lang.String namespaceURI)
Test whether a particular namespace is the default namespace.boolean
isEqualNode(org.w3c.dom.Node arg)
Compare whether two nodes have the same content.boolean
isSameNode(org.w3c.dom.Node other)
Determine whether this is the same node as another node.boolean
isSupported(java.lang.String feature, java.lang.String version)
Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.java.lang.String
lookupNamespaceURI(java.lang.String prefix)
Find the URI corresponding to a given in-scope prefixjava.lang.String
lookupPrefix(java.lang.String namespaceURI)
Get the (first) prefix assigned to a specified namespace URI, or null if the namespace is not in scope.void
normalize()
Puts allText
nodes in the full depth of the sub-tree underneath thisNode
, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separatesText
nodes, i.e., there are neither adjacentText
nodes nor emptyText
nodes.org.w3c.dom.Node
removeChild(org.w3c.dom.Node oldChild)
Remove the child node indicated byoldChild
from the list of children, and returns it.org.w3c.dom.Node
replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild)
Replace the child nodeoldChild
withnewChild
in the list of children, and returns theoldChild
node.void
setNodeValue(java.lang.String nodeValue)
Set the node value.void
setPrefix(java.lang.String prefix)
Set the namespace prefix of this node.void
setTextContent(java.lang.String textContent)
Set the text content of a node.java.lang.Object
setUserData(java.lang.String key, java.lang.Object data, org.w3c.dom.UserDataHandler handler)
Set user data.static NodeOverNodeInfo
wrap(NodeInfo node)
Factory method to construct a DOM node that wraps an underlying Saxon NodeInfo
-
-
-
Field Detail
-
node
protected NodeInfo node
-
-
Method Detail
-
getUnderlyingNodeInfo
public NodeInfo getUnderlyingNodeInfo()
Get the Saxon NodeInfo object representing this node- Returns:
- the Saxon NodeInfo object
-
wrap
public static NodeOverNodeInfo wrap(NodeInfo node)
Factory method to construct a DOM node that wraps an underlying Saxon NodeInfo- Parameters:
node
- the Saxon NodeInfo object- Returns:
- the DOM wrapper node
-
isSameNode
public final boolean isSameNode(org.w3c.dom.Node other)
Determine whether this is the same node as another node. DOM Level 3 method.- Specified by:
isSameNode
in interfaceorg.w3c.dom.Node
- Returns:
- true if this Node object and the supplied Node object represent the same node in the tree.
-
equals
public boolean equals(java.lang.Object obj)
The equals() method returns true for two Node objects that represent the same conceptual DOM Node. This is a concession to the Xalan IdentityTransformer, which relies on equals() for DOM Nodes having this behaviour, even though it is not defined in the specification- Overrides:
equals
in classjava.lang.Object
- Parameters:
obj
- the object to be compared- Returns:
- if this node and obj represent the same conceptual DOM node. That is, return true if isSameNode((Node)obj) returns true
-
hashCode
public int hashCode()
Return a hashCode- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- a hashCode such that two wrappers over the same underlying node have the same hashCode.
-
getBaseURI
public java.lang.String getBaseURI()
Get the base URI for the node. Default implementation for child nodes gets the base URI of the parent node.- Specified by:
getBaseURI
in interfaceorg.w3c.dom.Node
-
getNodeName
public java.lang.String getNodeName()
Get the name of this node, following the DOM rules- Specified by:
getNodeName
in interfaceorg.w3c.dom.Node
- Returns:
- The name of the node. For an element this is the element name, for an attribute it is the attribute name, as a lexical QName. Other node types return conventional names such as "#text" or "#comment"
-
getLocalName
public java.lang.String getLocalName()
Get the local name of this node, following the DOM rules- Specified by:
getLocalName
in interfaceorg.w3c.dom.Node
- Returns:
- The local name of the node. For an element this is the local part of the element name, for an attribute it is the local part of the attribute name. Other node types return null.
-
hasChildNodes
public boolean hasChildNodes()
Determine whether the node has any children.- Specified by:
hasChildNodes
in interfaceorg.w3c.dom.Node
- Returns:
true
if this node has any attributes,false
otherwise.
-
hasAttributes
public boolean hasAttributes()
Returns whether this node has any attributes. We treat the declaration of the XML namespace as being present on every element, and since namespace declarations are treated as attributes, every element has at least one attribute. This method therefore returns true.- Specified by:
hasAttributes
in interfaceorg.w3c.dom.Node
- Returns:
true
if this node has any attributes,false
otherwise.- Since:
- DOM Level 2
-
getNodeType
public short getNodeType()
Get the type of this node (node kind, in XPath terminology). Note, the numbers assigned to node kinds in Saxon (seeType
) are the same as those assigned in the DOM- Specified by:
getNodeType
in interfaceorg.w3c.dom.Node
-
getParentNode
public org.w3c.dom.Node getParentNode()
Find the parent node of this node.- Specified by:
getParentNode
in interfaceorg.w3c.dom.Node
- Returns:
- The Node object describing the containing element or root node.
-
getPreviousSibling
public org.w3c.dom.Node getPreviousSibling()
Get the previous sibling of the node- Specified by:
getPreviousSibling
in interfaceorg.w3c.dom.Node
- Returns:
- The previous sibling node. Returns null if the current node is the first child of its parent.
-
getNextSibling
public org.w3c.dom.Node getNextSibling()
Get next sibling node- Specified by:
getNextSibling
in interfaceorg.w3c.dom.Node
- Returns:
- The next sibling node. Returns null if the current node is the last child of its parent.
-
getFirstChild
public org.w3c.dom.Node getFirstChild()
Get first child- Specified by:
getFirstChild
in interfaceorg.w3c.dom.Node
- Returns:
- the first child node of this node, or null if it has no children
-
getLastChild
public org.w3c.dom.Node getLastChild()
Get last child- Specified by:
getLastChild
in interfaceorg.w3c.dom.Node
- Returns:
- last child of this node, or null if it has no children
-
getNodeValue
public java.lang.String getNodeValue()
Get the node value (as defined in the DOM). This is not generally the same as the XPath string-value: in particular, the node value of an element node is null.- Specified by:
getNodeValue
in interfaceorg.w3c.dom.Node
-
setNodeValue
public void setNodeValue(java.lang.String nodeValue) throws org.w3c.dom.DOMException
Set the node value. Always fails- Specified by:
setNodeValue
in interfaceorg.w3c.dom.Node
- Throws:
org.w3c.dom.DOMException
-
getChildNodes
public org.w3c.dom.NodeList getChildNodes()
Return aNodeList
that contains all children of this node. If there are no children, this is aNodeList
containing no nodes.- Specified by:
getChildNodes
in interfaceorg.w3c.dom.Node
-
getAttributes
public org.w3c.dom.NamedNodeMap getAttributes()
Return aNamedNodeMap
containing the attributes of this node (if it is anElement
) ornull
otherwise.- Specified by:
getAttributes
in interfaceorg.w3c.dom.Node
-
getOwnerDocument
public org.w3c.dom.Document getOwnerDocument()
Return theDocument
object associated with this node.- Specified by:
getOwnerDocument
in interfaceorg.w3c.dom.Node
-
insertBefore
public org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild) throws org.w3c.dom.DOMException
Insert the nodenewChild
before the existing child noderefChild
. Always fails.- Specified by:
insertBefore
in interfaceorg.w3c.dom.Node
- Parameters:
newChild
- The node to insert.refChild
- The reference node, i.e., the node before which the new node must be inserted.- Returns:
- The node being inserted.
- Throws:
org.w3c.dom.DOMException
- NO_MODIFICATION_ALLOWED_ERR: Always raised.
-
replaceChild
public org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild) throws org.w3c.dom.DOMException
Replace the child nodeoldChild
withnewChild
in the list of children, and returns theoldChild
node. Always fails.- Specified by:
replaceChild
in interfaceorg.w3c.dom.Node
- Parameters:
newChild
- The new node to put in the child list.oldChild
- The node being replaced in the list.- Returns:
- The node replaced.
- Throws:
org.w3c.dom.DOMException
- NO_MODIFICATION_ALLOWED_ERR: Always raised.
-
removeChild
public org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild) throws org.w3c.dom.DOMException
Remove the child node indicated byoldChild
from the list of children, and returns it. Always fails.- Specified by:
removeChild
in interfaceorg.w3c.dom.Node
- Parameters:
oldChild
- The node being removed.- Returns:
- The node removed.
- Throws:
org.w3c.dom.DOMException
- NO_MODIFICATION_ALLOWED_ERR: Always raised.
-
appendChild
public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild) throws org.w3c.dom.DOMException
Adds the nodenewChild
to the end of the list of children of this node. Always fails.- Specified by:
appendChild
in interfaceorg.w3c.dom.Node
- Parameters:
newChild
- The node to add.- Returns:
- The node added.
- Throws:
org.w3c.dom.DOMException
-
NO_MODIFICATION_ALLOWED_ERR: Always raised.
-
cloneNode
public org.w3c.dom.Node cloneNode(boolean deep)
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. Always fails.- Specified by:
cloneNode
in interfaceorg.w3c.dom.Node
- Parameters:
deep
- Iftrue
, recursively clone the subtree under the specified node; iffalse
, clone only the node itself (and its attributes, if it is anElement
).- Returns:
- The duplicate node.
-
normalize
public void normalize()
Puts allText
nodes in the full depth of the sub-tree underneath thisNode
, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separatesText
nodes, i.e., there are neither adjacentText
nodes nor emptyText
nodes.- Specified by:
normalize
in interfaceorg.w3c.dom.Node
- Since:
- DOM Level 2
-
isSupported
public boolean isSupported(java.lang.String feature, java.lang.String version)
Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.- Specified by:
isSupported
in interfaceorg.w3c.dom.Node
- Parameters:
feature
- The name of the feature to test. This is the same name which can be passed to the methodhasFeature
onDOMImplementation
.version
- This is the version number of the feature to test. In Level 2, version 1, this is the string "2.0". If the version is not specified, supporting any version of the feature will cause the method to returntrue
.- Returns:
- Returns
true
if the specified feature is supported on this node,false
otherwise. - Since:
- DOM Level 2
-
getNamespaceURI
public java.lang.String getNamespaceURI()
The namespace URI of this node, ornull
if it is unspecified.
This is not a computed value that is the result of a namespace lookup based on an examination of the namespace declarations in scope. It is merely the namespace URI given at creation time.
For nodes of any type other thanELEMENT_NODE
andATTRIBUTE_NODE
and nodes created with a DOM Level 1 method, such ascreateElement
from theDocument
interface, this is alwaysnull
. Per the Namespaces in XML Specification an attribute does not inherit its namespace from the element it is attached to. If an attribute is not explicitly given a namespace, it simply has no namespace.- Specified by:
getNamespaceURI
in interfaceorg.w3c.dom.Node
- Since:
- DOM Level 2
-
getPrefix
public java.lang.String getPrefix()
The namespace prefix of this node, ornull
if it is unspecified.
For nodes of any type other thanELEMENT_NODE
andATTRIBUTE_NODE
and nodes created with a DOM Level 1 method, such ascreateElement
from theDocument
interface, this is alwaysnull
.- Specified by:
getPrefix
in interfaceorg.w3c.dom.Node
- Since:
- DOM Level 2
-
setPrefix
public void setPrefix(java.lang.String prefix) throws org.w3c.dom.DOMException
Set the namespace prefix of this node. Always fails.- Specified by:
setPrefix
in interfaceorg.w3c.dom.Node
- Throws:
org.w3c.dom.DOMException
-
compareDocumentPosition
public short compareDocumentPosition(org.w3c.dom.Node other) throws org.w3c.dom.DOMException
Compare the position of the (other) node in document order with the reference node (this node). DOM Level 3 method.- Specified by:
compareDocumentPosition
in interfaceorg.w3c.dom.Node
- Parameters:
other
- the other node.- Returns:
- Returns how the node is positioned relatively to the reference node.
- Throws:
org.w3c.dom.DOMException
- if an error occurs
-
getTextContent
public java.lang.String getTextContent() throws org.w3c.dom.DOMException
Get the text content of a node. This is a DOM Level 3 method. The definition is the same as the definition of the string value of a node in XPath, except in the case of document nodes.- Specified by:
getTextContent
in interfaceorg.w3c.dom.Node
- Returns:
- the string value of the node, or null in the case of document nodes.
- Throws:
org.w3c.dom.DOMException
- if a dynamic error occurs
-
setTextContent
public void setTextContent(java.lang.String textContent) throws java.lang.UnsupportedOperationException
Set the text content of a node. Always fails.- Specified by:
setTextContent
in interfaceorg.w3c.dom.Node
- Parameters:
textContent
- the new text content of the node- Throws:
java.lang.UnsupportedOperationException
- always
-
lookupPrefix
public java.lang.String lookupPrefix(java.lang.String namespaceURI)
Get the (first) prefix assigned to a specified namespace URI, or null if the namespace is not in scope. DOM Level 3 method.- Specified by:
lookupPrefix
in interfaceorg.w3c.dom.Node
- Parameters:
namespaceURI
- the namespace whose prefix is required- Returns:
- the corresponding prefix, if there is one, or null if not.
-
isDefaultNamespace
public boolean isDefaultNamespace(java.lang.String namespaceURI)
Test whether a particular namespace is the default namespace. DOM Level 3 method.- Specified by:
isDefaultNamespace
in interfaceorg.w3c.dom.Node
- Parameters:
namespaceURI
- the namespace to be tested- Returns:
- true if this is the default namespace
-
lookupNamespaceURI
public java.lang.String lookupNamespaceURI(java.lang.String prefix)
Find the URI corresponding to a given in-scope prefix- Specified by:
lookupNamespaceURI
in interfaceorg.w3c.dom.Node
- Parameters:
prefix
- The namespace prefix whose namespace URI is required.- Returns:
- the corresponding namespace URI, or null if the prefix is not declared.
-
isEqualNode
public boolean isEqualNode(org.w3c.dom.Node arg)
Compare whether two nodes have the same content. This is a DOM Level 3 method.- Specified by:
isEqualNode
in interfaceorg.w3c.dom.Node
- Parameters:
arg
- The node to be compared. This must wrap a Saxon NodeInfo.- Returns:
- true if the two nodes are deep-equal.
-
getFeature
public java.lang.Object getFeature(java.lang.String feature, java.lang.String version)
Get a feature of this node. DOM Level 3 method, always returns null.- Specified by:
getFeature
in interfaceorg.w3c.dom.Node
- Parameters:
feature
- the required featureversion
- the version of the required feature- Returns:
- the value of the feature. Always null in this implementation
-
setUserData
public java.lang.Object setUserData(java.lang.String key, java.lang.Object data, org.w3c.dom.UserDataHandler handler)
Set user data. Always throws UnsupportedOperationException in this implementation- Specified by:
setUserData
in interfaceorg.w3c.dom.Node
- Parameters:
key
- name of the user datadata
- value of the user datahandler
- handler for the user data- Returns:
- This implementation always throws an exception
-
getUserData
public java.lang.Object getUserData(java.lang.String key)
Get user data associated with this node. DOM Level 3 method, always returns null in this implementation- Specified by:
getUserData
in interfaceorg.w3c.dom.Node
- Parameters:
key
- identifies the user data required- Returns:
- always null in this implementation
-
disallowUpdate
protected static void disallowUpdate() throws org.w3c.dom.DOMException
Internal method used to indicate that update operations are not allowed- Throws:
org.w3c.dom.DOMException
- always, to indicate that update is not supported in this DOM implementation
-
-