public final class Navigator
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
Navigator.AncestorEnumeration
General-purpose implementation of the ancestor and ancestor-or-self axes
|
static class |
Navigator.AxisFilter
AxisFilter is an iterator that applies a NodeTest filter to
the nodes returned by an underlying AxisIterator.
|
static class |
Navigator.DescendantEnumeration
General-purpose implementation of the descendant and descendant-or-self axes,
in terms of the child axis.
|
static class |
Navigator.EmptyTextFilter
EmptyTextFilter is an iterator that applies removes any zero-length text
nodes returned by an underlying AxisIterator.
|
static class |
Navigator.FollowingEnumeration
General purpose implementation of the following axis, in terms of the
ancestor, child, and following-sibling axes
|
static class |
Navigator.PrecedingEnumeration
Helper method to iterate over the preceding axis, or Saxon's internal
preceding-or-ancestor axis, by making use of the ancestor, descendant, and
preceding-sibling axes.
|
Modifier and Type | Method and Description |
---|---|
static java.lang.String |
alphaKey(int value)
Construct an alphabetic key from an positive integer; the key collates in the same sequence
as the integer
|
static void |
appendSequentialKey(SiblingCountingNode node,
FastStringBuffer sb,
boolean addDocNr)
Get a character string that uniquely identifies this node and that collates nodes
into document order
|
static int |
compareOrder(SiblingCountingNode first,
SiblingCountingNode second)
Generic (model-independent) method to determine the relative position of two
node in document order.
|
static int |
comparePosition(NodeInfo first,
NodeInfo second)
Generic (model-independent) method to determine the relative position of two
node in document order.
|
static void |
copy(NodeInfo node,
Receiver out,
int copyOptions,
Location locationId)
Generic (model-independent) implementation of deep copy algorithm for nodes.
|
static AxisIterator |
filteredSingleton(NodeInfo node,
NodeTest nodeTest)
Create an iterator over a singleton node, if it exists and matches a nodetest;
otherwise return an empty iterator
|
static AbsolutePath |
getAbsolutePath(NodeInfo node)
Get the absolute path to a node
|
static java.lang.String |
getAttributeValue(NodeInfo element,
java.lang.String uri,
java.lang.String localName)
Get the string value of an attribute of a given element, given the URI and
local part of the attribute name.
|
static java.lang.String |
getBaseURI(NodeInfo node)
Helper method to get the base URI of an element or processing instruction node
|
static StructuredQName |
getNodeName(NodeInfo node)
Helper method to get the name of a node as a structuredQName.
|
static int |
getNumberAny(Expression inst,
NodeInfo node,
Pattern count,
Pattern from,
XPathContext context,
boolean hasVariablesInPatterns)
Get node number (level="any").
|
static java.util.List<java.lang.Long> |
getNumberMulti(NodeInfo node,
Pattern count,
Pattern from,
XPathContext context)
Get node number (level="multiple").
|
static int |
getNumberSimple(NodeInfo node,
XPathContext context)
Get simple node number.
|
static int |
getNumberSingle(NodeInfo node,
Pattern count,
Pattern from,
XPathContext context)
Get node number (level="single").
|
static NodeInfo |
getOutermostElement(TreeInfo doc)
Helper method to get the outermost element of a document, given the document node
|
static java.lang.String |
getPath(NodeInfo node)
Get an absolute XPath expression that identifies a given node within its document
|
static java.lang.String |
getPath(NodeInfo node,
XPathContext context)
Get an absolute XPath expression that identifies a given node within its document
|
static int |
getSiblingPosition(NodeInfo node,
NodeTest nodeTest,
int max)
Get the sibling position of a node: specifically, count how many preceding siblings
of a node satisfy the nodetest.
|
static boolean |
haveSameName(NodeInfo n1,
NodeInfo n2)
Ask whether two nodes have the same name
|
static boolean |
isAncestorOrSelf(NodeInfo a,
NodeInfo d)
Test if one node is an ancestor-or-self of another
|
static NodeTest |
makeNodeTest(NamePool pool,
int nodeKind,
java.lang.String uri,
java.lang.String localName)
Helper method to construct a NodeTest for use with the
NodeInfo.iterateAxis(byte) method |
public static java.lang.String getAttributeValue(NodeInfo element, java.lang.String uri, java.lang.String localName)
element
- the element on which the required attribute appearsuri
- The namespace URI of the attribute name.
The "no namespace" case is represented as an empty string.localName
- The local part of the attribute name.public static StructuredQName getNodeName(NodeInfo node)
node
- the nodepublic static NodeInfo getOutermostElement(TreeInfo doc)
doc
- the document node at the root of the documentpublic static NodeTest makeNodeTest(NamePool pool, int nodeKind, java.lang.String uri, java.lang.String localName)
NodeInfo.iterateAxis(byte)
methodpool
- the NamePool.nodeKind
- The kind of node required, for example Type.ELEMENT
or Type.ATTRIBUTE
.
To select nodes of any kind, use Type.NODE
.uri
- The namespace URI of the nodes to be selected. Supply null to selects nodes from any
namespace or none. Supply "" to select nodes that are not in a namespace.localName
- The local name of the nodes to be selected. Supply null to select nodes irrespective
of their local name.public static java.lang.String getBaseURI(NodeInfo node)
node
- the node whose base URI is requiredpublic static java.lang.String getPath(NodeInfo node)
node
- the node whose path is required. If null is supplied,
an empty string is returned - this fact is used in making a recursive call
for a parentless node.public static java.lang.String getPath(NodeInfo node, XPathContext context)
node
- the node whose path is required. If null is supplied,
an empty string is returned - this fact is used in making a recursive call
for a parentless node.context
- the XPath dynamic evaluation context. May be null if no context is knownpublic static AbsolutePath getAbsolutePath(NodeInfo node)
node
- the node in questionpublic static boolean haveSameName(NodeInfo n1, NodeInfo n2)
n1
- the first noden2
- the second nodepublic static int getNumberSimple(NodeInfo node, XPathContext context)
node
- The node whose number is requiredcontext
- Used for remembering previous result, for
performance. May be null.public static int getNumberSingle(NodeInfo node, Pattern count, Pattern from, XPathContext context) throws XPathException
node
- the current node, the one whose node number is requiredcount
- Pattern that identifies which nodes should be
counted. Default (null) is the element name if the current node is
an element, or "node()" otherwise.from
- Pattern that specifies where counting starts from.
Default (null) is the root node. (This parameter does not seem
useful but is included for the sake of XSLT conformance.)context
- the dynamic context of the transformation, used if
the patterns reference context values (e.g. variables)XPathException
- when any error occurs in processingpublic static int getNumberAny(Expression inst, NodeInfo node, Pattern count, Pattern from, XPathContext context, boolean hasVariablesInPatterns) throws XPathException
inst
- Identifies the xsl:number expression; this is relevant
when the function is memoised to support repeated use of the same
instruction to number multiple nodesnode
- The node being numberedcount
- Pattern that identifies which nodes should be
counted. Default (null) is the element name if the current node is
an element, or "node()" otherwise.from
- Pattern that specifies where counting starts from.
Default (null) is the root node. Only nodes at or after the first (most
recent) node that matches the 'from' pattern are counted.context
- The dynamic context for the transformationhasVariablesInPatterns
- if the count or from patterns
contain variables, then it's not safe to get the answer by adding
one to the number of the most recent node that matchesXPathException
- if any dynamic error occurspublic static java.util.List<java.lang.Long> getNumberMulti(NodeInfo node, Pattern count, Pattern from, XPathContext context) throws XPathException
node
- The node to be numberedcount
- Pattern that identifies which nodes (ancestors and
their previous siblings) should be counted. Default (null) is the
element name if the current node is an element, or "node()"
otherwise.from
- Pattern that specifies where counting starts from.
Default (null) is the root node. Only nodes below the first (most
recent) node that matches the 'from' pattern are counted.context
- The dynamic context for the transformationXPathException
- if an error occurspublic static void copy(NodeInfo node, Receiver out, int copyOptions, Location locationId) throws XPathException
node
- The node to be copiedout
- The receiver to which events will be sentcopyOptions
- Options for copying namespaces, type annotations, etc,
as defined in CopyOptions
locationId
- The location of the instruction invoking the copyXPathException
- on any failure reported by the Receiverpublic static int compareOrder(SiblingCountingNode first, SiblingCountingNode second)
first
- The first nodesecond
- The second node, whose position is to be compared with the first nodepublic static int comparePosition(NodeInfo first, NodeInfo second)
first
- The first nodesecond
- The second node, whose position is to be compared with the first nodeAxisInfo.PRECEDING
if this node is on the preceding axis of the other node;
AxisInfo.FOLLOWING
if it is on the following axis; AxisInfo.ANCESTOR
if the first node is an
ancestor of the second; AxisInfo.DESCENDANT
if the first is a descendant of the second;
AxisInfo.SELF
if they are the same node.java.lang.UnsupportedOperationException
- if either node is an attribute or namespacepublic static void appendSequentialKey(SiblingCountingNode node, FastStringBuffer sb, boolean addDocNr)
node
- the node whose unique identifier is reuqiredsb
- a buffer to which the unique identifier will be appendedaddDocNr
- true if a unique document number is to be included in the informationpublic static java.lang.String alphaKey(int value)
value
- The positive integer key value (negative values are treated as zero).public static boolean isAncestorOrSelf(NodeInfo a, NodeInfo d)
a
- the putative ancestor-or-self noded
- the putative descendant nodepublic static AxisIterator filteredSingleton(NodeInfo node, NodeTest nodeTest)
node
- the singleton node, or null if the node does not existnodeTest
- the test to be appliedpublic static int getSiblingPosition(NodeInfo node, NodeTest nodeTest, int max)
node
- the starting node, which is assumed to satisfy the node testnodeTest
- the node testmax
- the maximum number of nodes to be countedCopyright (c) 2004-2018 Saxonica Limited. All rights reserved.