net.sf.saxon.s9api
Class XdmNode
- Iterable
This class represents a node in the XDM data model. A Node is an
XdmItem
, and is therefore an
XdmValue
in its own right, and may also participate as one item within a sequence value.
An XdmNode is implemented as a wrapper around an object of type
NodeInfo
.
Because this is a key interface within Saxon, it is exposed via this API.
The XdmNode interface exposes basic properties of the node, such as its name, its string value, and
its typed value. Navigation to other nodes is supported through a single method,
axisIterator
,
which allows other nodes to be retrieved by following any of the XPath axes.
Note that node identity cannot be inferred from object identity. The same node may be represented
by different
XdmNode
instances at different times, or even at the same time. The equals()
method on this class can be used to test for node identity.
Source | asSource() - Get a JAXP Source object corresponding to this node, allowing the node to be
used as input to transformations or queries
|
XdmSequenceIterator | axisIterator(Axis axis) - Get an iterator over the nodes reachable from this node via a given axis.
|
XdmSequenceIterator | axisIterator(Axis axis, QName name) - Get an iterator over the nodes reachable from this node via a given axis, selecting only
those nodes with a specified name.
|
boolean | equals(Object other) - The
equals() relation between two XdmNode objects is true if they both represent the same
node.
|
String | getAttributeValue(QName name) - Get the string value of a named attribute of this element
|
URI | getBaseURI() - Get the base URI of this node
|
int | getLineNumber() - Get the line number of the node in a source document.
|
XdmNodeKind | getNodeKind() - Get the kind of node.
|
QName | getNodeName() - Get the name of the node, as a QName
|
XdmNode | getParent() - Get the parent of this node
|
XdmValue | getTypedValue() - Get the typed value of this node, as defined in XDM
|
NodeInfo | getUnderlyingNode() - Get the underlying Saxon implementation object representing this node.
|
int | hashCode() - The hashcode is such that two XdmNode instances have the same hashCode if they represent the same
node.
|
String | toString() - The toString() method returns a simple XML serialization of the node
with defaulted serialization parameters.
|
asSource
public Source asSource()
Get a JAXP Source object corresponding to this node, allowing the node to be
used as input to transformations or queries
- a Source object corresponding to this node
axisIterator
public XdmSequenceIterator axisIterator(Axis axis)
Get an iterator over the nodes reachable from this node via a given axis.
axis
- identifies which axis is to be navigated
- an iterator over the nodes on the specified axis, starting from this node as the
context node. The nodes are returned in axis order, that is, in document order for a forwards
axis and in reverse document order for a reverse axis.
axisIterator
public XdmSequenceIterator axisIterator(Axis axis,
QName name)
Get an iterator over the nodes reachable from this node via a given axis, selecting only
those nodes with a specified name.
axis
- identifies which axis is to be navigatedname
- identifies the name of the nodes to be selected. The selected nodes will be those
whose node kind is the principal node kind of the axis (that is, attributes for the attribute
axis, namespaces for the namespace axis, and elements for all other axes) whose name matches
the specified name.
For example, specify new QName("", "item")
to select nodes with local name
"item", in no namespace.
- an iterator over the nodes on the specified axis, starting from this node as the
context node. The nodes are returned in axis order, that is, in document order for a forwards
axis and in reverse document order for a reverse axis.
equals
public boolean equals(Object other)
The equals()
relation between two XdmNode objects is true if they both represent the same
node. That is, it corresponds to the "is" operator in XPath.
other
- the object to be compared
- true if and only if the other object is an XdmNode instance representing the same node
getAttributeValue
public String getAttributeValue(QName name)
Get the string value of a named attribute of this element
name
- the name of the required attribute
- null if this node is not an element, or if this element has no
attribute with the specified name. Otherwise return the string value of the
selected attribute node.
getBaseURI
public URI getBaseURI()
Get the base URI of this node
- the base URI, as defined in the XDM model
getLineNumber
public int getLineNumber()
Get the line number of the node in a source document. For a document constructed using the document
builder, this is available only if the line numbering option was set when the document was built (and
then only for element nodes). If the line number is not available, the value -1 is returned. Line numbers
will typically be as reported by a SAX parser: this means that the line number for an element node is the
line number containing the closing ">" of the start tag.
- the line number of the node, or -1 if not available.
getNodeKind
public XdmNodeKind getNodeKind()
Get the kind of node.
- the kind of node, for example
XdmNodeKind
or XdmNodeKind
getNodeName
public QName getNodeName()
Get the name of the node, as a QName
- the name of the node. In the case of unnamed nodes (for example, text and comment nodes)
return null.
getParent
public XdmNode getParent()
Get the parent of this node
- the parent of this node (a document or element node), or null if this node has no parent.
getTypedValue
public XdmValue getTypedValue()
throws SaxonApiException
Get the typed value of this node, as defined in XDM
- the typed value. If the typed value is atomic, this will be returned as an instance
of
XdmAtomicValue
SaxonApiException
- if an error occurs obtaining the typed value, for example because
the node is an element with element-only content
getUnderlyingNode
public NodeInfo getUnderlyingNode()
Get the underlying Saxon implementation object representing this node. This provides
access to classes and methods in the Saxon implementation that may be subject to change
from one release to another.
- the underlying implementation object
hashCode
public int hashCode()
The hashcode is such that two XdmNode instances have the same hashCode if they represent the same
node. Note that the same node might be represented by different XdmNode objects, but these will
compare equal.
- a hashCode representing node identity
toString
public String toString()
The toString() method returns a simple XML serialization of the node
with defaulted serialization parameters.
In the case of an element node, the result will be a well-formed
XML document serialized as defined in the W3C XSLT/XQuery serialization specification,
using options method="xml", indent="yes", omit-xml-declaration="yes".
In the case of a document node, the result will be a well-formed
XML document provided that the document node contains exactly one element child,
and no text node children. In other cases it will be a well-formed external
general parsed entity.
In the case of an attribute node, the output is a string in the form
name="value"
. The name will use the original namespace prefix.
Other nodes, such as text nodes, comments, and processing instructions, are
represented as they would appear in lexical XML.
For more control over serialization, use the Serializer
class.
- a simple XML serialization of the node. Under error conditions the method
may return an error message which will always begin with the label "Error: ".