### Saxon.Api

- BinaryResource
- CatalogCollection
- DirectoryCollection
- DocumentBuilder
- DomDestination
- DynamicContext
- DynamicError
- EmptyEnumerator<T>
- ErrorReporter
- ErrorReporterToStaticError
- ErrorReporterWrapper
- ExtensionFunction
- ExtensionFunctionCall
- ExtensionFunctionDefinition
- Feature<T>
- FeatureKeys
- HostLanguage
- ICollectionFinder
- IErrorReporter
- IInvalidityHandler
- IMessageListener
- IMessageListener2
- InvalidityHandlerWrapper
- IPredicate<in XdmItem>
- IQueryResolver
- IResource
- IResourceCollection
- IResourceFactory
- IResultDocumentHandler
- IXmlLocation
- JarCollection
- NamespaceConstant
- NullDestination
- Predicate<T>
- Predicates
- Processor
- QName
- RawDestination
- RecoveryPolicy
- Resource
- ResourceCollection
- SchemaManager
- SchemaResolver
- SchemaValidationMode
- SchemaValidator
- Serializer
- StandardCollectionFinder
- StandardLogger
- StaticContext
- StaticError
- Step<TInput, TResult>
- Steps
- TextWriterDestination
- TreeModel
- URIQueryParameters
- ValidationFailure
- WhitespacePolicy
- XdmAnyArrayType
- XdmAnyFunctionType
- XdmAnyItemType
- XdmAnyMapType
- XdmAnyNodeType
- XdmArray
- XdmAtomicType
- XdmAtomicValue
- XdmAxis
- XdmDestination
  - - TreeProtector
- XdmEmptySequence
- XdmExternalObjectValue
- XdmFunctionItem
- XdmItem
- XdmItemType
- XdmMap
- XdmNode
- XdmNodeKind
- XdmSequenceType
- XdmValue
- XmlDestination
- XmlProcessingError
- XmlResource
- XPathCompiler
- XPathExecutable
- XPathSelector
- XQueryCompiler
- XQueryEvaluator
- XQueryExecutable
- Xslt30Transformer
- XsltCompiler
- XsltExecutable
  - - ParameterDetails
- XsltPackage
- XsltTransformer

### Saxon.Api

# Class XdmNode

public class XdmNode
extends XdmItem

The class `XdmNode` 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 `net.sf.saxon.NodeInfo`. Because this is a key interface within Saxon, it is exposed via this API, even though it is a Java interface that is not part of the API proper.

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, `EnumerateAxis`, which allows other nodes to be retrieved by following any of the XPath axes.

### Property Summary
Uri | BaseUri Get the base URI of the node.
int | ColumnNumber Get the column number of the node in a source document.
Uri | DocumentUri Get the document URI of the node.
net.sf.saxon.om.NodeInfo | Implementation Escape hatch to the underlying class in the Java implementation
int | LineNumber Get the line number of the node in a source document.
XmlNodeType | NodeKind The kind of node, as an instance of `System.Xml.XmlNodeType`.
QName | NodeName The name of the node, as a `QName`. Returns null in the case of unnamed nodes.
string | OuterXml Return a serialization of this node as lexical XML
XdmNode | Parent Get the parent of this node.
Processor | Processor Get a Processor suitable for use with this XdmNode.
XdmNode | Root Get the root of the tree containing this node.
string | StringValue Get the string value of the node.
XdmValue | TypedValue The typed value of the node, as an instance of `XdmValue`.

### Method Summary
IEnumerable<XdmNode> | Children(IPredicate<XdmNode> filter) Get the nodes found on the child axis that satisfy a supplied `Predicate`.
IEnumerable<XdmNode> | Children() Get the element children of this node
IEnumerable<XdmNode> | Children(string localName) Get the element children of this node having a specified local name, irrespective of the namespace
IEnumerable<XdmNode> | Children(string uri, string localName) Get the element children having a specified namespace URI and local name
IEnumerable<XdmNode> | EnumerableOverAxis(XdmAxis axis) Get an enumerable that supplies all the nodes on one of the XPath axes, starting with this node.
IEnumerator<XdmNode> | EnumerateAxis(XdmAxis axis) Get an enumerator that supplies all the nodes on one of the XPath axes, starting with this node.
IEnumerator<XdmNode> | EnumerateAxis(XdmAxis axis, QName nodeName) Get an enumerator that selects all the nodes on one of the XPath axes, provided they have a given name. The nodes selected are those of the principal node kind (elements for most axes, attributes for the attribute axis, namespace nodes for the namespace axis) whose name matches the name given in the second argument.
bool | Equals(object obj) Two instances of `XdmNode` are equal if they represent the same node. That is, the `Equals()` method returns the same result as the XPath "is" operator.
string | GetAttributeValue(QName name) Get a the string value of a named attribute of this element.
string | GetAttributeValue(string name) Get a the string value of a named attribute (in no namespace) of this element.
int | GetHashCode() The hash code of a node reflects the equality relationship: if two `XdmNode` instances represent the same node, then they have the same hash code
XmlNode | getUnderlyingXmlNode() Unwraps the underlying `XmlNode` object from the `XdmValue`. If the method does not wrap a `XmlNode` then a null is returned
bool | IsAtomic() Determine whether the item is an atomic value
IEnumerable<XdmNode> | Select(Step<XdmNode, XdmNode> step) Get a IEnumerable of XdmNodes by applying a `Step` to this XdmNode value.
string | ToString() Return a string representation of the node.
void | WriteTo(XmlWriter writer) Send the node (that is, the subtree rooted at this node) to an `XmlWriter`

## Property Detail

### BaseUri

public Uri BaseUri {get; }

Get the base URI of the node.

### ColumnNumber

public int ColumnNumber {get; }

Get the column 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 column number is not available, the value -1 is returned. Line numbers will typically be as reported by a SAX parser; this means that the column number for an element node is the column number containing the closing ">" of the start tag.

### DocumentUri

public Uri DocumentUri {get; }

Get the document URI of the node.

### Implementation

public net.sf.saxon.om.NodeInfo Implementation {get; }

Escape hatch to the underlying class in the Java implementation

### LineNumber

public int LineNumber {get; }

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.

### NodeKind

public XmlNodeType NodeKind {get; }

The kind of node, as an instance of `System.Xml.XmlNodeType`.

For a namespace node in the XDM model, the value `XmlNodeType.None` is returned.

### NodeName

public QName NodeName {get; }

The name of the node, as a `QName`. Returns null in the case of unnamed nodes.

### OuterXml

public string OuterXml {get; }

Return a serialization of this node as lexical XML

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.

### Parent

public XdmNode Parent {get; }

Get the parent of this node.

Returns either a document node, an element node, or null in the case where this node has no parent.

### Processor

public Processor Processor {get; }

Get a Processor suitable for use with this XdmNode.

In most cases this will be the original Processor object used to create the DocumentBuilder that built the document that contains this node. If that Processor is not available, it will be a compatible `Processor`, one that shares the same underlying net.sf.saxon.Configuration, and hence is initialized with the same configuration settings, schema components, license features, and so on.

Note: the only case where the original `Processor` is not available is when the same `Configuration` is used with multiple APIs, for example mixing s9api and JAXP or XQJ in the same application.

Returns:

Returns a `Processor` suitable for performing further operations on this node, for example for creating a Serializer or an XPathCompiler.

### Root

public XdmNode Root {get; }

Get the root of the tree containing this node.

Returns the root of the tree containing this node (which might be this node itself).

### StringValue

public string StringValue {get; }

Get the string value of the node.

### TypedValue

public XdmValue TypedValue {get; }

The typed value of the node, as an instance of `XdmValue`.

A `DynamicError` is thrown if the node has no typed value, as will be the case for an element with element-only content.

## Method Detail

### Children

public IEnumerable<XdmNode> Children(IPredicate<XdmNode> filter)

Get the nodes found on the child axis that satisfy a supplied `Predicate`.

Parameters:

`filter` - the predicate to be applied

Returns:

an `Iterable` containing those nodes found on the child axis that satisfy the supplied predicate.

### Children

public IEnumerable<XdmNode> Children()

Get the element children of this node

Returns:

an `Iterable` containing all nodes on the child axis.

### Children

public IEnumerable<XdmNode> Children(string localName)

Get the element children of this node having a specified local name, irrespective of the namespace

Parameters:

`localName` - the local name of the child elements to be selected, or "*" to select all children that are element nodes

Returns:

an `Iterable` containing the element children of this node that have the required local name.

### Children

public IEnumerable<XdmNode> Children(string uri,
string localName)

Get the element children having a specified namespace URI and local name

Parameters:

`uri` - the namespace URI of the child elements to be selected: supply a zero-length string to indicate the null namespace
`localName` - the local name of the child elements to be selected

Returns:

an `Iterable` containing the element children of this node that have the required local name and namespace URI.

### EnumerableOverAxis

public IEnumerable<XdmNode> EnumerableOverAxis(XdmAxis axis)

Get an enumerable that supplies all the nodes on one of the XPath axes, starting with this node.

The nodes are returned in axis order: that is, document order for a forwards axis, reverse document order for a reverse axis.

Parameters:

`axis` - The axis to be navigated, for example `XdmAxis.Child` for the child axis.

### EnumerateAxis

public IEnumerator<XdmNode> EnumerateAxis(XdmAxis axis)

Get an enumerator that supplies all the nodes on one of the XPath axes, starting with this node.

The nodes are returned in axis order: that is, document order for a forwards axis, reverse document order for a reverse axis.

Parameters:

`axis` - The axis to be navigated, for example `XdmAxis.Child` for the child axis.

### EnumerateAxis

public IEnumerator<XdmNode> EnumerateAxis(XdmAxis axis,
QName nodeName)

Get an enumerator that selects all the nodes on one of the XPath axes, provided they have a given name. The nodes selected are those of the principal node kind (elements for most axes, attributes for the attribute axis, namespace nodes for the namespace axis) whose name matches the name given in the second argument.

The nodes are returned in axis order: that is, document order for a forwards axis, reverse document order for a reverse axis.

Parameters:

`axis` - The axis to be navigated, for example `XdmAxis.Child` for the child axis.
`nodeName` - The name of the required nodes, for example `new QName("", "item")` to select nodes with local name "item", in no namespace.

### Equals

public override bool Equals(object obj)

Two instances of `XdmNode` are equal if they represent the same node. That is, the `Equals()` method returns the same result as the XPath "is" operator.

Parameters:

`obj` - The object node to be compared

### GetAttributeValue

public string GetAttributeValue(QName name)

Get a the string value of a named attribute of this element.

Returns null if this node is not an element, or if this element has no attribute with the specified name.

Parameters:

`name` - The name of the attribute whose value is required

### GetAttributeValue

public string GetAttributeValue(string name)

Get a the string value of a named attribute (in no namespace) of this element.

Returns null if this node is not an element, or if this element has no attribute with the specified name.

Parameters:

`name` - The name of the attribute whose value is required, interpreted as no-namespace name

### GetHashCode

public override int GetHashCode()

The hash code of a node reflects the equality relationship: if two `XdmNode` instances represent the same node, then they have the same hash code

### getUnderlyingXmlNode

public XmlNode getUnderlyingXmlNode()

Unwraps the underlying `XmlNode` object from the `XdmValue`. If the method does not wrap a `XmlNode` then a null is returned

Returns:

The underlying `XmlNode`

### IsAtomic

public override bool IsAtomic()

Determine whether the item is an atomic value

Returns:

false (the item is not an atomic value)

### Select

public IEnumerable<XdmNode> Select(Step<XdmNode, XdmNode> step)

Get a IEnumerable of XdmNodes by applying a `Step` to this XdmNode value.

Parameters:

`step` - the `Step` to be applied to this node

Returns:

an IEnumerable of nodes obtained by applying the `Step` function to this node

### ToString

public override string ToString()

Return a string representation of the node.

This method returns the value of the XdmNode.OuterXml property. To get the string value of a node as defined in XPath, use the XdmNode.StringValue property.

### WriteTo

public void WriteTo(XmlWriter writer)

Send the node (that is, the subtree rooted at this node) to an `XmlWriter`

Note that an `XmlWriter` can only handle a well-formed XML document. This method will therefore signal an exception if the node is a document node with no children, or with more than one element child.

Parameters:

`writer` - The `XmlWriter` to which the node is to be written