http://zorba.io/modules/node-position

View as XML or JSON.

This module provides a function (np:node-position) that, given a node, returns positional information about the node in the form of an xs:anyURI item. The module also defines functions that use such positional information to determine: (1) positional relationships between two nodes (e.g. if one is the ancestor of another) and (2) positional properties of a single node (e.g. its level in the tree).

Within this module, the term "node position" will be used to refer to an xs:anyURI item that is returned by the np:node-position function.

Function Summary

ancestor-of ($pos1 as xs:anyURI, $pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is an ancestor of the node position given as first argument.

attribute-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is an attribute of the node position given as first argument.

child-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a child of the node position given as first argument.

descendant-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a descendant of the node position given as first argument.

following-in-document-order-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is following in document order the node position given as first argument.

following-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is following the node position given as first argument.

following-sibling-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a following-sibling of the node position given as first argument.

in-collection ($n-pos as xs:anyURI) as xs:boolean external

Determines whether a node position belongs to a collection.

in-same-collection-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether two node positions belong to the same collection.

in-same-tree-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether two node positions belong to the same tree.

in-subtree-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument belongs to the subtree rooted at the node position given as first argument.

is-attribute ($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to an attribute node.

is-comment ($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to a comment node.

is-document ($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to a document node.

is-element ($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to an element node.

is-processing-instruction ($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to an processing-instruction node.

is-text ($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to a text node.

level ($n-pos as xs:anyURI) as xs:integer external

Computes the level of a node position in its tree.

node-position ($arg as node()) as xs:anyURI external

Return a URI item containing positional information for a given node.

parent-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is the parent of the node position given as first argument.

preceding-in-document-order-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is preceding in document order the node position given as first argument.

preceding-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is preceding the node position given as first argument.

preceding-sibling-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a preceding-sibling of the node position given as first argument.

sibling-of ($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether two node positions are siblings.

Functions

ancestor-of#2

declare  function np:ancestor-of($pos1 as xs:anyURI, $pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is an ancestor of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is an ancestor of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

pos1 as xs:anyURI
pos2 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos2 is an ancestor of the node position $n-pos1; false otherwise.

attribute-of#2

declare  function np:attribute-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is an attribute of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is an attribute of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential parent node position
n-pos2 as xs:anyURI
the potential attribute node position

Returns

xs:boolean
true if the node position $n-pos2 is an attribute of the node position $n-pos1; false otherwise.

child-of#2

declare  function np:child-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a child of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is a child of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential parent node position
n-pos2 as xs:anyURI
the potential child node position

Returns

xs:boolean
true if the node position $n-pos2 is a child of the node position $n-pos1; false otherwise.

descendant-of#2

declare  function np:descendant-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a descendant of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is a descendant of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential ancestor node position
n-pos2 as xs:anyURI
the potential descendant node position

Returns

xs:boolean
true if the node position $n-pos2 is a descendant of the node position $n-pos1; false otherwise.

following-in-document-order-of#2

declare  function np:following-in-document-order-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is following in document order the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is following in document order the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential preceding node position
n-pos2 as xs:anyURI
the potential following node position

Returns

xs:boolean
true if the node position $n-pos2 is following in document order the node position $n-pos1; false otherwise.

following-of#2

declare  function np:following-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is following the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is following the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential preceding node position
n-pos2 as xs:anyURI
the potential following node position

Returns

xs:boolean
true if node positions $n-pos1 and $n-pos2 belong to the same XML tree and $n-pos2 is following the node position $n-pos1; false otherwise.

following-sibling-of#2

declare  function np:following-sibling-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a following-sibling of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is a following-sibling of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential preceding-sibling node position
n-pos2 as xs:anyURI
the potential following-sibling node position

Returns

xs:boolean
true if the node position $n-pos2 is a following-sibling of the node position $n-pos1; false otherwise.

in-collection#1

declare  function np:in-collection($n-pos as xs:anyURI) as xs:boolean external

Determines whether a node position belongs to a collection.

Parameters

n-pos as xs:anyURI
the node position

Returns

xs:boolean
true if the node position $n-pos belongs to a collection; false otherwise.

in-same-collection-of#2

declare  function np:in-same-collection-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether two node positions belong to the same collection.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the two nodes belong to the same collection.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
a node position
n-pos2 as xs:anyURI
a node position

Returns

xs:boolean
true if the two nodes whose node positions are $n-pos1 and $n-pos2 belong to the same collection.

in-same-tree-of#2

declare  function np:in-same-tree-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether two node positions belong to the same tree.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the two nodes belong to the same tree.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
a node position
n-pos2 as xs:anyURI
a node position

Returns

xs:boolean
true if the two nodes whose node positions are $n-pos1 and $n-pos2 belong to the same tree.

in-subtree-of#2

declare  function np:in-subtree-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument belongs to the subtree rooted at the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node belongs to the subtree rooted at the first. Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

This function differs from np:descendant-of in the way it treats attribute nodes. np:descendant-of follows the XQuery/XPath specification for the descendant axis, and as a result, it does not consider attributes as descendants of any nodes; it will always return false if $n-pos2 was obtained from an attribute node.In contrast, np:in-subtree-of will return true if $n-pos2 was obtained from an attribute node that appeared in the subtree of the node that $n-pos1 was obtained from.

Parameters

n-pos1 as xs:anyURI
the potential subtree root node position
n-pos2 as xs:anyURI
the potential node in the subtree node position

Returns

xs:boolean
true if the node position $n-pos2 belongs to the subtree rooted at the node position $n-pos1; false otherwise.

is-attribute#1

declare  function np:is-attribute($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to an attribute node.

Parameters

n-pos1 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos corresponds to an attribute; false otherwise.

is-comment#1

declare  function np:is-comment($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to a comment node.

Parameters

n-pos1 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos corresponds to an comment; false otherwise.

is-document#1

declare  function np:is-document($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to a document node.

Parameters

n-pos1 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos corresponds to a document; false otherwise.

is-element#1

declare  function np:is-element($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to an element node.

Parameters

n-pos1 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos corresponds to an element; false otherwise.

is-processing-instruction#1

declare  function np:is-processing-instruction($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to an processing-instruction node.

Parameters

n-pos1 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos corresponds to a processing instruction; false otherwise.

is-text#1

declare  function np:is-text($n-pos1 as xs:anyURI) as xs:boolean external

Determines whether a node position corresponds to a text node.

Parameters

n-pos1 as xs:anyURI

Returns

xs:boolean
true if the node position $n-pos corresponds to a text; false otherwise.

level#1

declare  function np:level($n-pos as xs:anyURI) as xs:integer external

Computes the level of a node position in its tree.

Note: The root node of a tree is at level one.

The result of the function applies to the corresponding node as well, that is, within the snapshot in which the position was computed, the node level is the returned one.

The result of the function does not imply anything about the node level in other snapshots.

Parameters

n-pos as xs:anyURI
the node position of the node whose level should be determined.

Returns

xs:integer
the level in the tree of the node position $n-pos as xs:integer.

node-position#1

declare  function np:node-position($arg as node()) as xs:anyURI external

Return a URI item containing positional information for a given node.

Within a snapshot, each has a different positional URI. However, different nodes in different snapshots might have the same URI.

Parameters

arg as node()
the node for which the positional information URI should be computed

Returns

xs:anyURI
the opaque positional information URI of the node.

parent-of#2

declare  function np:parent-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is the parent of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is the parent of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential child node position
n-pos2 as xs:anyURI
the potential parent node position

Returns

xs:boolean
true if the node position $n-pos2 is the parent of the node position $n-pos1; false otherwise.

preceding-in-document-order-of#2

declare  function np:preceding-in-document-order-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is preceding in document order the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is preceding in document order the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential following node position
n-pos2 as xs:anyURI
the potential preceding node position

Returns

xs:boolean
true if the node position $n-pos2 is preceding in document order the node position $n-pos1; false otherwise.

preceding-of#2

declare  function np:preceding-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is preceding the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is preceding the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential following node position
n-pos2 as xs:anyURI
the potential preceding node position

Returns

xs:boolean
true if node positions $n-pos1 and $n-pos2 belong to the same XML tree and $n-pos2 is preceding the node position $n-pos1; false otherwise.

preceding-sibling-of#2

declare  function np:preceding-sibling-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether the node position given as second argument is a preceding-sibling of the node position given as first argument.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is a preceding-sibling of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
the potential following-sibling node position
n-pos2 as xs:anyURI
the potential preceding-sibling node position

Returns

xs:boolean
true if the node position $n-pos2 is a preceding-sibling of the node position $n-pos1; false otherwise.

sibling-of#2

declare  function np:sibling-of($n-pos1 as xs:anyURI, $n-pos2 as xs:anyURI) as xs:boolean external

Determines whether two node positions are siblings.

If the two positions were obtained within the same snapshot S, then the result of the function applies to the corresponding nodes as well, that is, within snapshot S, the second node is a sibling of the first.

Otherwise, the result of the function does not imply anything about the positional relationship of the two nodes.

Parameters

n-pos1 as xs:anyURI
a node position
n-pos2 as xs:anyURI
a node position

Returns

xs:boolean
true if the two node positions $n-pos1 and $n-pos2 are siblings; false otherwise.