xsl-list
[Top] [All Lists]

Aw: [xsl] Using node-set variables in predicates (another node comparison question)

2022-01-01 02:38:48
I think you have the right _expression_ but you could also use
[some $node in $nodes satisfies . is $node]
as the predicate.

--
Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.
Am 01.01.22, 07:00 schrieb "Chris Papademetrious christopher(_dot_)papademetrious(_at_)synopsys(_dot_)com" <xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>:

Hi everyone, and happy new year's!

 

Let's say I have a variable that contains a set of nodes:

 

<xsl:variable name="nodes" select="//(foo|bar|baz)"/>

 

In XPath 3.0, I can apply a template directly to this node-set variable (very cool!):

 

<xsl:template match="$nodes">

 

However, what's the best way to use this node-set variable as a predicate filter? For example, let's say I wanted to select every preceding sibling node directly before each node in the variable:

 

<xsl:template match="preceding-sibling::node()[1][. intersect $nodes]">

 

The "interesect" operator works, but it's not intuitive. Is there a simple Boolean operator that indicates whether a given node exists in a set of nodes? ([. = $nodes] compares text evaluations of the nodes, not the nodes themselves.)

 

I hope the answer is not obvious, because I spent longer than I'd like to admit trying to figure this out.  :)

 

- Chris

 

<Prev in Thread] Current Thread [Next in Thread>