### 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 Steps

public class Steps

This non-instantiable class provides a number of useful implementations of the `Step` class which wraps a `Func` object, used to navigate XDM trees, typically getting the `Func` property and used as an argument to `XdmValue#Select` and `XdmValue#SelectMany`.

### Method Summary
static Step<XdmNode, XdmNode> | Ancestor() Obtain a `Step` to navigate from a node to its ancestors, in reverse document order (that is, nearest ancestor first, root node last).
static Step<XdmNode, XdmNode> | Ancestor(string localName) Obtain a `Step` that navigates from a node to its ancestor elements having a specified local name, irrespective of the namespace. The nodes are returned in reverse document order (that is, nearest ancestor first, root node last).
static Step<XdmNode, XdmNode> | Ancestor(string uri, string localName) Return a `Step` that navigates from a node to its ancestors having a specified namespace URI and local name, in reverse document order (that is, nearest ancestor first, root node last).
static Step<XdmNode, XdmNode> | Ancestor(Predicate<XdmItem> filter) Obtain a `Step` that filters the nodes found on the ancestor axis using a supplied `Predicate`. Nodes are returned in reverse document order (that is, nearest ancestor first, root node last).
static Step<XdmNode, XdmNode> | AncestorOrSelf() Obtain a `Step` to navigate from a node to its ancestors, in reverse document order, with the node itself returned at the start of the sequence (that is, origin node first, root node last).
static Step<XdmNode, XdmNode> | AncestorOrSelf(string localName) Obtain a `Step` that navigates from a node to its ancestor elements having a specified local name, irrespective of the namespace. The nodes are returned in reverse document order (that is, nearest ancestor first, root node last), and include the node itself.
static Step<XdmNode, XdmNode> | AncestorOrSelf(string uri, string localName) Obtain a `Step` that navigates from a node to its ancestors-or-self having a specified namespace URI and local name, in reverse document order (that is, nearest ancestor first, root node last).
static Step<XdmNode, XdmNode> | AncestorOrSelf(Predicate<XdmItem> filter) Obtain a `Step` that filters the nodes found on the ancestor-or-self axis using a supplied `Predicate`. Nodes are returned in reverse document order (that is, origin node first, root node last).
static Step<XdmItem, XdmAtomicValue> | Atomize() Obtain an selector that atomizes an item to produce a `XdmValue` of atomic values. Atomizing a node will usually produce a single atomic value, but in the case of schema-typed nodes using a list type, there may be more than one atomic value. Atomizing an array also returns multiple atomic values.
static Step<XdmNode, XdmNode> | Attribute() Obtain a `Step` to navigate from a node to its attributes.
static Step<XdmNode, XdmNode> | Attribute(string localName) Obtain a `Step` that navigates from a node to its attributes having a specified local name, irrespective of the namespace.
static Step<XdmNode, XdmNode> | Attribute(string uri, string localName) Return a `Step` that navigates from a node to its attribute having a specified namespace URI and local name.
static Step<XdmNode, XdmNode> | Attribute(IPredicate<XdmNode> filter) Obtain a `Step` that filters the nodes found on the attribute axis using a supplied `Predicate`. The function call `Attribute(predicate)` is equivalent to `Attribute.Where(predicate)`.
static Step<XdmNode, XdmNode> | Child() Obtain a `Step` to navigate from a node to its children
static Step<XdmNode, XdmNode> | Child(string localName) Obtain a `Step` that navigates from a node to the element children having a specified local name, irrespective of the namespace.
static Step<XdmNode, XdmNode> | Child(string uri, string localName) Obtain a `Step` that navigates from a node to the element children having a specified namespace URI and local name.
static Step<XdmNode, XdmNode> | Child(IPredicate<XdmNode> filter) Obtain a `Step` that filters the nodes found on the child axis using a supplied `Predicate`. The function call `Child(predicate)` is equivalent to `Child.Where(predicate)`. For example, `Child(IsElement())` returns a `Step` that selects the element node children of a given node.
static Step<XdmNode, XdmNode> | Descendant() Obtain a `Step` to navigate from a node to its descendants, which are returned in document order.
static Step<XdmNode, XdmNode> | Descendant(string localname) Obtain a `Step` that navigates from a node to the descendant elements having a specified local name, irrespective of the namespace. These are returned in document order.
static Step<XdmNode, XdmNode> | Descendant(string uri, string localName) Obtain a `Step` that navigates from a node to the descendant elements having a specified namespace URI and local name.
static Step<XdmNode, XdmNode> | Descendant(IPredicate<XdmNode> filter) Obtain a `Step` that filters the nodes found on the descendant axis using a supplied `Predicate`. The function call `Descendant(predicate)` is equivalent to `Descendant.Where(predicate)`. For example, `Steps.Descendant(Predicates.IsElement())` returns a `Step` that selects the element node descendants of a given node, while `Descendant(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in document order.
static Step<XdmNode, XdmNode> | DescendantOrSelf() Obtain a `Step` to navigate from a node to its descendants, which are returned in document order, preceded by the origin node itself.
static Step<XdmNode, XdmNode> | DescendantOrSelf(string localname) Obtain a `Step` that navigates from a node to the descendant-or-self elements having a specified local name, irrespective of the namespace. These are returned in document order.
static Step<XdmNode, XdmNode> | DescendantOrSelf(string uri, string localName) Obtain a `Step` that navigates from a node to the descendant-or-self elements having a specified namespace URI and local name.
static Step<XdmNode, XdmNode> | DescendantOrSelf(IPredicate<XdmNode> filter) Obtain a `Step` that filters the nodes found on the descendant-or-self axis using a supplied `Predicate`. The function call `DescendantOrSelf(predicate)` is equivalent to `DescendantOrSelf.Where(predicate)`. For example, `Steps.DescendantOrSelf(Predicates.IsElement())` returns a `Step` that selects the descendant-or-self element nodes of a given node, while `DescendantOrSelf(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in document order.
static Step<XdmNode, XdmNode> | Following() Obtain a `Step` to navigate from a node to its following nodes (excluding descendants), which are returned in document order.
static Step<XdmNode, XdmNode> | Following(string localName) Obtain a `Step` that navigates from a node to the following elements having a specified local name, irrespective of the namespace. These are returned in document order.
static Step<XdmNode, XdmNode> | Following(string uri, string localName) Obtain a `Step` that navigates from a node to the following elements having a specified namespace URI and local name. These are returned in document order.
static Step<XdmNode, XdmNode> | Following(Predicate<XdmItem> filter) Obtain a `Step` that filters the nodes found on the following axis using a supplied `Predicate`. The function call `Following(predicate)` is equivalent to `Following().Where(predicate)`. For example, `Following(IsElement())` returns a `Step` that selects the following elements of a given node, while `Following(Exists(Attribute("id")))` selects those that have an attribute named "id". These are returned in document order.
static Step<XdmNode, XdmNode> | FollowingSibling() Obtain a `Step` to navigate from a node to its following siblings, which are returned in document order.
static Step<XdmNode, XdmNode> | FollowingSibling(string localName) Obtain a `Step` that navigates from a node to the following sibling elements having a specified local name, irrespective of the namespace. These are returned in document order.
static Step<XdmNode, XdmNode> | FollowingSibling(string uri, string localName) Obtain a `Step` that navigates from a node to the following sibling elements having a specified namespace URI and local name. These are returned in document order.
static Step<XdmNode, XdmNode> | FollowingSibling(Predicate<XdmItem> filter) Obtain a `Step` that filters the nodes found on the following sibling axis using a supplied `Predicate`. The function call `FollowingSibling(predicate)` is equivalent to `FollowingSibling.Where(predicate)`. For example, `FollowingSibling(IsElement())` returns a `Step` that selects the following sibling elements of a given node, while `FollowingSibling(Exists(Attribute("id")))` selects those that have an attribute named "id". These are returned in document order.
static Step<XdmNode, XdmNode> | id(XdmNode doc) Obtain a Step whose effect is to interpret the supplied item as an `xs:ID` value and return the nodes (in a given document) that have that string as their ID.
static Step<XdmNode, XdmNode> | Namespace() Obtain a `Step` to navigate from a node to its namespace nodes.
static Step<XdmNode, XdmNode> | Namespace(string localName) Obtain a `Step` that navigates from a node to its namespaces having a specified local name. The local name of a namespace node corresponds to the prefix used in the namespace binding.
static Step<XdmNode, XdmNode> | Namespace(Predicate<XdmItem> filter) Obtain a `Step` that filters the nodes found on the namespace axis using a supplied `Predicate`. The function call `Namespace(predicate)` is equivalent to `Namespace().Where(predicate)`. For example, `Namespace(Eq("http://www.w3.org/1999/XSL/Transform")` selects a namespace node that binds a prefix to the XSLT namespace.
static Step<XdmNode, XdmNode> | Parent() Obtain a `Step` to navigate from a node to its parent.
static Step<XdmNode, XdmNode> | Parent(string localName) Obtain a `Step` that navigates from a node to the parent element provided it has a specified local name, irrespective of the namespace.
static Step<XdmNode, XdmNode> | Parent(string uri, string localName) Obtain a `Step` that navigates from a node to the parent element provided it has a specified namespace URI and local name.
static Step<XdmNode, XdmNode> | Parent(Predicate<XdmItem> filter) Obtain a `Step` that filters the node found on the parent axis using a supplied `Predicate`. The function call `Parent(filter)` is equivalent to `Parent(filter).where(Predicate)`. For example, `Parent(Predicate.IsElement()).GetFunc` returns a `Step` that selects the parent node provided it is an element
static Step<XdmNode, XdmNode> | Path(string[] steps) Construct a path as a composite `Step` from a sequence of steps composed together.
static Step<XdmNode, XdmNode> | PathFromList(List<Step<XdmNode, XdmNode>> steps) Construct a path as a composite `Step` from a list of steps composed together.
static Step<XdmNode, XdmNode> | Preceding() Obtain a `Step` to navigate from a node to its preceding nodes (excluding ancestors), which are returned in reverse document order.
static Step<XdmNode, XdmNode> | Preceding(string localName) Obtain a `Step` that navigates from a node to the preceding elements having a specified local name. These are returned in reverse document order.
static Step<XdmNode, XdmNode> | Preceding(string uri, string localName) Obtain a `Step` that navigates from a node to the preceding elements having a specified namespace URI and local name. These are returned in reverse document order.
static Step<XdmNode, XdmNode> | Preceding(Predicate<XdmItem> filter) Obtain a Step that filters the nodes found on the preceding axis using a supplied `Predicate` . The function call `Preceding(predicate)` is equivalent to `Preceding().Where(predicate)`. For example, `Preceding(isElement())` returns a `Step` that selects the preceding elements of a given node, while `Preceding(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in reverse document order.
static Step<XdmNode, XdmNode> | PrecedingSibling() Obtain a `Step` to navigate from a node to its preceding siblings, which are returned in reverse document order.
static Step<XdmNode, XdmNode> | PrecedingSibling(string localName) Obtain a `Step` that navigates from a node to the preceding sibling elements having a specified local name. These are returned in reverse document order.
static Step<XdmNode, XdmNode> | PrecedingSibling(string uri, string localName) Obtain a `Step` that navigates from a node to the preceding sibling elements having a specified namespace URI and local name. These are returned in reverse document order.
static Step<XdmNode, XdmNode> | PrecedingSibling(Predicate<XdmItem> filter) Obtain a `Step` that filters the nodes found on the preceding sibling axis using a supplied `Predicate`. The function call `PrecedingSibling(predicate)` is equivalent to `PrecedingSibling().Where(predicate)`. For example, `PrecedingSibling(isElement())` returns a `Step` that selects the preceding sibling elements of a given node, while `PrecedingSibling(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in reverse document order.
static Step<XdmNode, XdmNode> | Root() Obtain a `Step` that selects the root node of the containing document (which may or may not be a document node). If not a node a wrapped empty sequence is returned.
static Step<XdmNode, XdmNode> | Self() Obtain a `Step` to navigate from a node to itself (useful only if applying a predicate).
static Step<XdmNode, XdmNode> | Self(string localName) Obtain a `Step` that navigates from a node to itself provided it is an element with a specified local name, irrespective of the namespace.
static Step<XdmNode, XdmNode> | Self(string uri, string localName) Obtain a `Step` that navigates from a node to itself provided it has a specified namespace URI and local name.
static Step<XdmNode, XdmNode> | Self(Predicate<XdmNode> filter) Obtain a `Step` that filters the node found on the self axis using a supplied `Predicate` filter. The function call `Self(predicate)` is equivalent to `Self().Where(predicate)`. For example, `self(isElement())` returns a `Step` that selects the supplied node provided it is an element.
static Step<XdmNode, XdmNode> | Text() Obtain a `Step` that returns text nodes found on the child axis. The function call `Text()` is equivalent to `Child().Where(Predicate.IsText)`.
static Step<XdmAtomicValue, XdmAtomicValue> | Tokenize() Obtain a `Step` whose effect is to tokenize the supplied item on whitespace boundaries, returning a sequence of strings as `XdmAtomicValue` instances.

## Method Detail

### Ancestor

public static Step<XdmNode, XdmNode> Ancestor()

Obtain a `Step` to navigate from a node to its ancestors, in reverse document order (that is, nearest ancestor first, root node last).

Returns:

A `Step` that selects all nodes on the ancestor axis.

### Ancestor

public static Step<XdmNode, XdmNode> Ancestor(string localName)

Obtain a `Step` that navigates from a node to its ancestor elements having a specified local name, irrespective of the namespace. The nodes are returned in reverse document order (that is, nearest ancestor first, root node last).

Parameters:

`localName` - The local name of the ancestors to be selected by the `Step`, or "*" to select all ancestors that are element nodes

Returns:

A `Step`, which selects the ancestors of a supplied node that have the required local name.

### Ancestor

public static Step<XdmNode, XdmNode> Ancestor(string uri,
string localName)

Return a `Step` that navigates from a node to its ancestors having a specified namespace URI and local name, in reverse document order (that is, nearest ancestor first, root node last).

Parameters:

`uri` - The namespace URI of the ancestors to be selected by the `Step`
`localName` - The local name of the ancestors to be selected by the `Step`

Returns:

A `Step`, which selects the ancestors (at most one) of a supplied node that have the required local name and namespace URI.

### Ancestor

public static Step<XdmNode, XdmNode> Ancestor(Predicate<XdmItem> filter)

Obtain a `Step` that filters the nodes found on the ancestor axis using a supplied `Predicate`. Nodes are returned in reverse document order (that is, nearest ancestor first, root node last).

The function call `Ancestor(predicate)` is equivalent to `Ancestor.Where(predicate)`.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the ancestor-or-self axis using the supplied predicate.

### AncestorOrSelf

public static Step<XdmNode, XdmNode> AncestorOrSelf()

Obtain a `Step` to navigate from a node to its ancestors, in reverse document order, with the node itself returned at the start of the sequence (that is, origin node first, root node last).

Returns:

A `Step` that selects all nodes on the ancestor-or-self axis.

### AncestorOrSelf

public static Step<XdmNode, XdmNode> AncestorOrSelf(string localName)

Obtain a `Step` that navigates from a node to its ancestor elements having a specified local name, irrespective of the namespace. The nodes are returned in reverse document order (that is, nearest ancestor first, root node last), and include the node itself.

Parameters:

`localName` - The local name of the ancestors to be selected by the `Step`, or "*" to select all ancestor-or-self nodes that are element nodes

Returns:

A `Step`, which selects the ancestors-or-self of a supplied node that have the required local name.

### AncestorOrSelf

public static Step<XdmNode, XdmNode> AncestorOrSelf(string uri,
string localName)

Obtain a `Step` that navigates from a node to its ancestors-or-self having a specified namespace URI and local name, in reverse document order (that is, nearest ancestor first, root node last).

Parameters:

`uri` - The namespace URI of the ancestors to be selected by the `Step`: supply a zero-length string to indicate the null namespace
`localName` - The local name of the ancestors to be selected by the `Step`

Returns:

A `Step`, which selects the ancestors-or-self of a supplied node that have the required local name and namespace URI.

### AncestorOrSelf

public static Step<XdmNode, XdmNode> AncestorOrSelf(Predicate<XdmItem> filter)

Obtain a `Step` that filters the nodes found on the ancestor-or-self axis using a supplied `Predicate`. Nodes are returned in reverse document order (that is, origin node first, root node last).

The function call `AncestorOrSelf(predicate)` is equivalent to `AncestorOrSelf.Where(predicate)`.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the ancestor-or-self axis using a supplied predicate.

### Atomize

public static Step<XdmItem, XdmAtomicValue> Atomize()

Obtain an selector that atomizes an item to produce a `XdmValue` of atomic values. Atomizing a node will usually produce a single atomic value, but in the case of schema-typed nodes using a list type, there may be more than one atomic value. Atomizing an array also returns multiple atomic values.

### Attribute

public static Step<XdmNode, XdmNode> Attribute()

Obtain a `Step` to navigate from a node to its attributes.

Returns:

A `Step` that selects all attribute nodes.

### Attribute

public static Step<XdmNode, XdmNode> Attribute(string localName)

Obtain a `Step` that navigates from a node to its attributes having a specified local name, irrespective of the namespace.

Parameters:

`localName` - The local name of the attributes to be selected by the `Step`, or "*" to select all attributes

Returns:

A `Step`, which selects the attributes of a supplied node that have the required local name.

### Attribute

public static Step<XdmNode, XdmNode> Attribute(string uri,
string localName)

Return a `Step` that navigates from a node to its attribute having a specified namespace URI and local name.

Parameters:

`uri` - The namespace URI of the attributes to be selected by the `Step`: supply a zero-length string to indicate the null namespace
`localName` - The local name of the attributes to be selected by the `Step`

Returns:

A `Step`, which selects the attributes (at most one) of a supplied node that have the required local name and namespace URI.

### Attribute

public static Step<XdmNode, XdmNode> Attribute(IPredicate<XdmNode> filter)

Obtain a `Step` that filters the nodes found on the attribute axis using a supplied `Predicate`. The function call `Attribute(predicate)` is equivalent to `Attribute.Where(predicate)`.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the attribute axis using the supplied predicate.

### Child

public static Step<XdmNode, XdmNode> Child()

Obtain a `Step` to navigate from a node to its children

Returns:

A `Step` that selects all nodes on the child axis

### Child

public static Step<XdmNode, XdmNode> Child(string localName)

Obtain a `Step` that navigates from a node to the element children having a specified local name, irrespective of the namespace.

Parameters:

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

Returns:

A `Step`, which selects the element children of a supplied node that have the required local name.

### Child

public static Step<XdmNode, XdmNode> Child(string uri,
string localName)

Obtain a `Step` that navigates from a node to the element children having a specified namespace URI and local name.

Parameters:

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

Returns:

A `Step`, which selects the element children of a supplied node that have the required local name and namespace URI.

### Child

public static Step<XdmNode, XdmNode> Child(IPredicate<XdmNode> filter)

Obtain a `Step` that filters the nodes found on the child axis using a supplied `Predicate`. The function call `Child(predicate)` is equivalent to `Child.Where(predicate)`. For example, `Child(IsElement())` returns a `Step` that selects the element node children of a given node.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the child axis using the supplied predicate.

### Descendant

public static Step<XdmNode, XdmNode> Descendant()

Obtain a `Step` to navigate from a node to its descendants, which are returned in document order.

Returns:

A `Step` that selects all nodes on the descendant axis.

### Descendant

public static Step<XdmNode, XdmNode> Descendant(string localname)

Obtain a `Step` that navigates from a node to the descendant elements having a specified local name, irrespective of the namespace. These are returned in document order.

Parameters:

`localname` - The local name of the descendant elements to be selected by the `Step`, or "*" to select all descendants that are element nodes

Returns:

A `Step`, which selects the element descendants of a supplied node that have the required local name.

### Descendant

public static Step<XdmNode, XdmNode> Descendant(string uri,
string localName)

Obtain a `Step` that navigates from a node to the descendant elements having a specified namespace URI and local name.

Parameters:

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

Returns:

A `Step`, which selects the element descendants of a supplied node that have the required local name and namespace URI.

### Descendant

public static Step<XdmNode, XdmNode> Descendant(IPredicate<XdmNode> filter)

Obtain a `Step` that filters the nodes found on the descendant axis using a supplied `Predicate`. The function call `Descendant(predicate)` is equivalent to `Descendant.Where(predicate)`. For example, `Steps.Descendant(Predicates.IsElement())` returns a `Step` that selects the element node descendants of a given node, while `Descendant(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in document order.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the descendant axis using the supplied predicate.

### DescendantOrSelf

public static Step<XdmNode, XdmNode> DescendantOrSelf()

Obtain a `Step` to navigate from a node to its descendants, which are returned in document order, preceded by the origin node itself.

Returns:

A `Step` that selects all nodes on the descendant-or-self axis.

### DescendantOrSelf

public static Step<XdmNode, XdmNode> DescendantOrSelf(string localname)

Obtain a `Step` that navigates from a node to the descendant-or-self elements having a specified local name, irrespective of the namespace. These are returned in document order.

Parameters:

`localname` - The local name of the descendant-or-self elements to be selected by the `Step`, or "*" to select all descendant-or-self that are element nodes

Returns:

A `Step`, which selects the descendant-or-self elements of a supplied node that have the required local name.

### DescendantOrSelf

public static Step<XdmNode, XdmNode> DescendantOrSelf(string uri,
string localName)

Obtain a `Step` that navigates from a node to the descendant-or-self elements having a specified namespace URI and local name.

Parameters:

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

Returns:

A `Step`, which selects the descendant-or-self elements of a supplied node that have the required local name and namespace URI.

### DescendantOrSelf

public static Step<XdmNode, XdmNode> DescendantOrSelf(IPredicate<XdmNode> filter)

Obtain a `Step` that filters the nodes found on the descendant-or-self axis using a supplied `Predicate`. The function call `DescendantOrSelf(predicate)` is equivalent to `DescendantOrSelf.Where(predicate)`. For example, `Steps.DescendantOrSelf(Predicates.IsElement())` returns a `Step` that selects the descendant-or-self element nodes of a given node, while `DescendantOrSelf(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in document order.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the descendant-or-self axis using the supplied predicate.

### Following

public static Step<XdmNode, XdmNode> Following()

Obtain a `Step` to navigate from a node to its following nodes (excluding descendants), which are returned in document order.

Returns:

A `Step` that selects all nodes on the following axis.

### Following

public static Step<XdmNode, XdmNode> Following(string localName)

Obtain a `Step` that navigates from a node to the following elements having a specified local name, irrespective of the namespace. These are returned in document order.

Parameters:

`localName` - The local name of the following elements to be selected by the `Step`, or "*" to select all following nodes that are elements

Returns:

A `Step`, which selects the following elements of a supplied node that have the required local name.

### Following

public static Step<XdmNode, XdmNode> Following(string uri,
string localName)

Obtain a `Step` that navigates from a node to the following elements having a specified namespace URI and local name. These are returned in document order.

Parameters:

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

Returns:

A `Step`, which selects the following elements of a supplied node that have the required local name and namespace URI.

### Following

public static Step<XdmNode, XdmNode> Following(Predicate<XdmItem> filter)

Obtain a `Step` that filters the nodes found on the following axis using a supplied `Predicate`. The function call `Following(predicate)` is equivalent to `Following().Where(predicate)`. For example, `Following(IsElement())` returns a `Step` that selects the following elements of a given node, while `Following(Exists(Attribute("id")))` selects those that have an attribute named "id". These are returned in document order.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the following axis using the supplied predicate.

### FollowingSibling

public static Step<XdmNode, XdmNode> FollowingSibling()

Obtain a `Step` to navigate from a node to its following siblings, which are returned in document order.

Returns:

A `Step` that selects all nodes on the following-sibling axis.

### FollowingSibling

public static Step<XdmNode, XdmNode> FollowingSibling(string localName)

Obtain a `Step` that navigates from a node to the following sibling elements having a specified local name, irrespective of the namespace. These are returned in document order.

Parameters:

`localName` - The local name of the following sibling elements to be selected by the `Step`, or "*" to select all following siblings that are element nodes

Returns:

A `Step`, which selects the following sibling elements of a supplied node that have the required local name.

### FollowingSibling

public static Step<XdmNode, XdmNode> FollowingSibling(string uri,
string localName)

Obtain a `Step` that navigates from a node to the following sibling elements having a specified namespace URI and local name. These are returned in document order.

Parameters:

`uri` - The namespace URI of the following sibling elements to be selected by the `Step`: supply a zero-length string to indicate the null namespace
`localName` - The local name of the following sibling elements to be selected by the `Step`

Returns:

A `Step`, which selects the following sibling elements of a supplied node that have the required local name and namespace URI.

### FollowingSibling

public static Step<XdmNode, XdmNode> FollowingSibling(Predicate<XdmItem> filter)

Obtain a `Step` that filters the nodes found on the following sibling axis using a supplied `Predicate`. The function call `FollowingSibling(predicate)` is equivalent to `FollowingSibling.Where(predicate)`. For example, `FollowingSibling(IsElement())` returns a `Step` that selects the following sibling elements of a given node, while `FollowingSibling(Exists(Attribute("id")))` selects those that have an attribute named "id". These are returned in document order.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the following sibling axis using the supplied predicate.

### id

public static Step<XdmNode, XdmNode> id(XdmNode doc)

Obtain a Step whose effect is to interpret the supplied item as an `xs:ID` value and return the nodes (in a given document) that have that string as their ID.

Parameters:

`doc` - The root node (document node) of the document within which the ID value should be sought

Returns:

A `Step` whose effect is to return the nodes that have the given string as their ID.

### Namespace

public static Step<XdmNode, XdmNode> Namespace()

Obtain a `Step` to navigate from a node to its namespace nodes.

Returns:

A `Step` that selects all nodes on the namespace axis.

### Namespace

public static Step<XdmNode, XdmNode> Namespace(string localName)

Obtain a `Step` that navigates from a node to its namespaces having a specified local name. The local name of a namespace node corresponds to the prefix used in the namespace binding.

Parameters:

`localName` - The local name (representing the namespace prefix) of the namespace nodes to be selected by the `Step`, or "*" to select all namespaces

Returns:

A `Step`, which selects the namespaces of a supplied node that have a given local name (prefix).

### Namespace

public static Step<XdmNode, XdmNode> Namespace(Predicate<XdmItem> filter)

Obtain a `Step` that filters the nodes found on the namespace axis using a supplied `Predicate`. The function call `Namespace(predicate)` is equivalent to `Namespace().Where(predicate)`. For example, `Namespace(Eq("http://www.w3.org/1999/XSL/Transform")` selects a namespace node that binds a prefix to the XSLT namespace.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the namespace axis using the supplied predicate.

### Parent

public static Step<XdmNode, XdmNode> Parent()

Obtain a `Step` to navigate from a node to its parent.

Returns:

A `Step` that selects all nodes on the parent axis (of which there is at most one).

### Parent

public static Step<XdmNode, XdmNode> Parent(string localName)

Obtain a `Step` that navigates from a node to the parent element provided it has a specified local name, irrespective of the namespace.

Parameters:

`localName` - The local name of the parent element to be selected by the `Step`, or "*" to select the parent node provided it is an element

Returns:

A `Step`, which selects the parent of a supplied node provided it is an element with the required local name.

### Parent

public static Step<XdmNode, XdmNode> Parent(string uri,
string localName)

Obtain a `Step` that navigates from a node to the parent element provided it has a specified namespace URI and local name.

Parameters:

`uri` - The namespace URI of the parent element to be selected by the `Step`: supply a zero-length string to indicate the null namespace
`localName` - The local name of the parent element to be selected by the `Step`

Returns:

A `Step`, which selects the parent element of a supplied node provided it is an element with the required local name and namespace URI.

### Parent

public static Step<XdmNode, XdmNode> Parent(Predicate<XdmItem> filter)

Obtain a `Step` that filters the node found on the parent axis using a supplied `Predicate`. The function call `Parent(filter)` is equivalent to `Parent(filter).where(Predicate)`. For example, `Parent(Predicate.IsElement()).GetFunc` returns a `Step` that selects the parent node provided it is an element

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the parent axis using the supplied predicate.

### Path

public static Step<XdmNode, XdmNode> Path(string[] steps)

Construct a path as a composite `Step` from a sequence of steps composed together.

Parameters:

`steps` - The constituent steps in the path

Returns:

A composite step.

### PathFromList

public static Step<XdmNode, XdmNode> PathFromList(List<Step<XdmNode, XdmNode>> steps)

Construct a path as a composite `Step` from a list of steps composed together.

Parameters:

`steps` - The constituent steps in the path

Returns:

A composite step.

### Preceding

public static Step<XdmNode, XdmNode> Preceding()

Obtain a `Step` to navigate from a node to its preceding nodes (excluding ancestors), which are returned in reverse document order.

Returns:

A `Step` that selects all nodes on the preceding axis.

### Preceding

public static Step<XdmNode, XdmNode> Preceding(string localName)

Obtain a `Step` that navigates from a node to the preceding elements having a specified local name. These are returned in reverse document order.

Parameters:

`localName` - The local name of the preceding elements to be selected by the `Step`, or "*" to select all descendants that are element nodes

Returns:

A `Step`, which selects the preceding elements of a supplied node that have the required local name.

### Preceding

public static Step<XdmNode, XdmNode> Preceding(string uri,
string localName)

Obtain a `Step` that navigates from a node to the preceding elements having a specified namespace URI and local name. These are returned in reverse document order.

Parameters:

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

Returns:

A `Step`, which selects the preceding elements of a supplied node that have the required local name and namespace URI.

### Preceding

public static Step<XdmNode, XdmNode> Preceding(Predicate<XdmItem> filter)

Obtain a Step that filters the nodes found on the preceding axis using a supplied `Predicate` . The function call `Preceding(predicate)` is equivalent to `Preceding().Where(predicate)`. For example, `Preceding(isElement())` returns a `Step` that selects the preceding elements of a given node, while `Preceding(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in reverse document order.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the following axis using the supplied predicate.

### PrecedingSibling

public static Step<XdmNode, XdmNode> PrecedingSibling()

Obtain a `Step` to navigate from a node to its preceding siblings, which are returned in reverse document order.

Returns:

A `Step` that selects all nodes on the preceding-sibling axis.

### PrecedingSibling

public static Step<XdmNode, XdmNode> PrecedingSibling(string localName)

Obtain a `Step` that navigates from a node to the preceding sibling elements having a specified local name. These are returned in reverse document order.

Parameters:

`localName` - The local name of the preceding sibling elements to be selected by the `Step`, or "*" to select all descendants that are element nodes

Returns:

A `Step`, which selects the preceding sibling elements of a supplied node that have the required local name.

### PrecedingSibling

public static Step<XdmNode, XdmNode> PrecedingSibling(string uri,
string localName)

Obtain a `Step` that navigates from a node to the preceding sibling elements having a specified namespace URI and local name. These are returned in reverse document order.

Parameters:

`uri` - The namespace URI of the preceding sibling elements to be selected by the `Step`: supply a zero-length string to indicate the null namespace
`localName` - The local name of the preceding sibling elements to be selected by the `Step`

Returns:

A `Step`, which selects the preceding sibling elements of a supplied node that have the required local name and namespace URI.

### PrecedingSibling

public static Step<XdmNode, XdmNode> PrecedingSibling(Predicate<XdmItem> filter)

Obtain a `Step` that filters the nodes found on the preceding sibling axis using a supplied `Predicate`. The function call `PrecedingSibling(predicate)` is equivalent to `PrecedingSibling().Where(predicate)`. For example, `PrecedingSibling(isElement())` returns a `Step` that selects the preceding sibling elements of a given node, while `PrecedingSibling(Predicate.Exists(attribute("id")))` selects those that have an attribute named "id". These are returned in reverse document order.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the following sibling axis using the supplied predicate.

### Root

public static Step<XdmNode, XdmNode> Root()

Obtain a `Step` that selects the root node of the containing document (which may or may not be a document node). If not a node a wrapped empty sequence is returned.

Returns:

A `Step` that selects the root node of the containing document.

### Self

public static Step<XdmNode, XdmNode> Self()

Obtain a `Step` to navigate from a node to itself (useful only if applying a predicate).

Returns:

A `Step` that selects all nodes on the self axis (that is, the node itself).

### Self

public static Step<XdmNode, XdmNode> Self(string localName)

Obtain a `Step` that navigates from a node to itself provided it is an element with a specified local name, irrespective of the namespace.

Parameters:

`localName` - The local name of the element to be selected by the `Step`, or "*" to select the node provided that it is an element node

Returns:

A `Step`, which selects the supplied node provided it has a given local name.

### Self

public static Step<XdmNode, XdmNode> Self(string uri,
string localName)

Obtain a `Step` that navigates from a node to itself provided it has a specified namespace URI and local name.

Parameters:

`uri` - The namespace URI of the element to be selected by the `Step`: supply a zero-length string to indicate the null namespace
`localName` - The local name of the element to be selected by the `Step`

Returns:

A `Step`, which selects the supplied node provided it is an element with a given local name and namespace URI.

### Self

public static Step<XdmNode, XdmNode> Self(Predicate<XdmNode> filter)

Obtain a `Step` that filters the node found on the self axis using a supplied `Predicate` filter. The function call `Self(predicate)` is equivalent to `Self().Where(predicate)`. For example, `self(isElement())` returns a `Step` that selects the supplied node provided it is an element.

Parameters:

`filter` - The predicate to be applied

Returns:

A `Step` that filters the nodes found on the self axis using the supplied predicate.

### Text

public static Step<XdmNode, XdmNode> Text()

Obtain a `Step` that returns text nodes found on the child axis. The function call `Text()` is equivalent to `Child().Where(Predicate.IsText)`.

Returns:

A `Step` that returns the text nodes found on the child axis.

### Tokenize

public static Step<XdmAtomicValue, XdmAtomicValue> Tokenize()

Obtain a `Step` whose effect is to tokenize the supplied item on whitespace boundaries, returning a sequence of strings as `XdmAtomicValue` instances.

Note: the tokenize step, when applied to a string with leading and trailing whitespace, has the effect of removing this whitespace. In addition to its primary role, the function can therefore be useful for trimming the content of a single string.

Returns:

A `Step` whose effect is to take a supplied item and split its string value into a sequence of `xs:string` instances