Description
The functx:is-node-among-descendants-deep-equal function returns a boolean value indicating whether or not a node has the same contents as a node in a sequence, or one of the descendants of a node in the sequence. It determines whether the nodes have the same content using the built-in fn:deep-equal function. If $node or $seq is the empty sequence, it returns false.
For a similar function based on the identity of a node rather than its contents, see functx:is-node-among-descendants.
Arguments and Return TypeName | Type | Description |
$node |
node()? |
the node to test |
$seq |
node()* |
the sequence of nodes to search |
return value |
xs:boolean |
XQuery Function DeclarationSee XSLT definition. | declare namespace functx = "http://www.functx.com";
declare function functx:is-node-among-descendants-deep-equal
( $node as node()? ,
$seq as node()* ) as xs:boolean {
some $nodeInSeq in $seq/descendant-or-self::*/(.|@*)
satisfies deep-equal($nodeInSeq,$node)
} ; |
Exampleslet $in-xml := | <authors>
<author>
<fName>Kate</fName>
<lName>Jones</lName>
</author>
<author>
<fName>John</fName>
<lName>Doe</lName>
</author>
</authors> | let $anAuthor := | <author>
<fName>John</fName>
<lName>Doe</lName>
</author> | let $anotherAuthor := | <author>
<lName>Doe</lName>
<fName>John</fName>
</author> | return |
XQuery Example | Results |
---|
functx:is-node-among-descendants-deep-equal(
$in-xml/author[1],$in-xml) |
true |
functx:is-node-among-descendants-deep-equal(
$anAuthor,$in-xml) |
true |
functx:is-node-among-descendants-deep-equal(
$anotherAuthor,$in-xml) |
false |
functx:is-node-among-descendants-deep-equal(
$anAuthor,$in-xml/author) |
true |
See AlsoHistory |
Recommended Reading:
|