[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Template-matching nodes from input vs nodes in variable based on their position


Subject: Re: [xsl] Template-matching nodes from input vs nodes in variable based on their position
From: "Jorge . chocolate.camera@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 22 Jun 2015 15:42:00 -0000

On Wed, Jun 17, 2015 at 9:22 PM, Dimitre Novatchev
dnovatchev@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>>    <xsl:variable name="FOO" as="node()+">
>>        <page>Page number 1</page>
>>        <page>Page number 2</page>
>>        <page>Page number 3</page>
>>        <page>Page number 4</page>
>>        <page>Page number 5</page>
>>        <page>Page number 6</page>
>>        <page>Page number 7</page>
>>    </xsl:variable>
>
> The nodes in $FOO are parent-less.
>
> and
>
>    match="page[position() = (1,3,5)]"
>
> means:
>
>    match any "page" element that is either the 1st, 3rd or 5th "page" child
of its parent
>
> But none of these page elements have a parent, therefore they aren't
matched.

I learnt this from the answers you all gave and the diagram that Ken
suggested from his book. I am still, nevertheless, trying to reconcile
that with the fact that I can reference a node from $FOO based on its
position in the sequence:

    <xsl:sequence select="$FOO[position() eq 3]"/> b <page>Page number
3</page>

And yet, indeed as per your answers, if I query the position of that
node, the value returned is 1 instead of 3:

    <xsl:sequence select="$FOO[position() eq 3]/position()"/> b 1

which looks bizarre to me.


Current Thread