Subject: Re: [xsl] XQuery/XPath 3.1: Node List to Node Set ("distinct nodes") From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 28 Dec 2021 19:15:40 -0000 |
I couldnbt find an answer in my google and markmail searching so I thought Ibd ask here:
Given an arbitrary list of nodes that may contain duplicates, what is the most efficient way to reduce the node list to a set?
The solution I came up with is a recursive function:
(:
Get the unique nodes from the supplied sequence
@param nodes The sequence of nodes to evaluate
@return A sequence of nodes such that each node in $nodes exists exactly once.
:)
declare function dutils:distinctNodes($nodes as node()*) as node()* {
B dutils:_getDistinctNodes($nodes, ())
};
declare function dutils:_getDistinctNodes($nodes as node()*, $resultList as node()*) as node()* {
B if (exists($nodes))
B then
B let $node := head($nodes)
B return dutils:_getDistinctNodes(tail($nodes), ($resultList | $node))
B else $resultList
};
Which works but I feel like Ibm missing some obvious way to do this more directly, but Ibm not seeing it.
Am I missing a better solution?
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XQuery/XPath 3.1: Node List t, Eliot Kimber eliot.k | Thread | Re: [xsl] XQuery/XPath 3.1: Node Li, Eliot Kimber eliot.k |
[xsl] XQuery/XPath 3.1: Node List t, Eliot Kimber eliot.k | Date | Re: [xsl] XQuery/XPath 3.1: Node Li, Eliot Kimber eliot.k |
Month |