Subject: Re: [xsl] Handling position in non-atomic sequences From: "Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sat, 2 May 2020 11:31:14 -0000 |
<xsl:function name="my:index-of" as="xs:integer*"> <xsl:param name="seq" as="node()*"/> <xsl:param name="nodes-in-question" as="node()*"/> <xsl:sequence select="index-of( for $s in $seq return generate-id($s), for $n in $nodes-in-question return generate-id($n) )"/> </xsl:function>
Hi folks,
if a sequence stored in a variable consists of elements, we can not use the nice function index-of().
Also, if the variable is typed as="element()*" I cannot use the axes preceding-sibling or following-sibling. I can solve that by not typing the variable or use as="document-node()" after adding <xsl:document> to the variable's sequence constructor.
My current solution finding the position of the first <h1> in a sequence would be something like:
count($seq/h1[1]/preceding-sibling::*) + 1
with $seq being a sequence typed as document-node().
Are there better methods to get the position of a certain element in the sequence?
In my scenario I collect a certain set of elements using xsl:copy-of and want to process them in the context of that sequence (regarding position) and not in the context of their original document location.
Thanks a lot for any pointers,
- Michael
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Handling position in non-, Martin Honnen martin | Thread | Re: [xsl] Handling position in non-, Michael Kay mike@xxx |
Re: [xsl] Handling position in non-, Martin Honnen martin | Date | Re: [xsl] Handling position in non-, Michael Kay mike@xxx |
Month |