Re: [xsl] Question about position()

Subject: Re: [xsl] Question about position()
From: "David Carlisle d.p.carlisle@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 14 May 2024 15:44:37 -0000
$features[1]  means (more or less)  $features[position()=1]  and so selects
the first tem

$features[position()]  means (more or less)
$features[position()=position()]  and so selects the full sequence as the
filter is alway true.

David


On Tue, 14 May 2024 at 16:32, rick@xxxxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Hi All,
>
>
>
> I am creating sorted variable in order to use as a lookup later. Later, I
> want to loop through the nodes and return its code attribute value one at a
> time. When I use the position() function as a predicate, it returns all of
> the attributes instead of the one at that position. If I put a hard-coded
> number in as the predicate, it returns a single value, which is what I
> expect. I am missing something fundamental here. Thank you for the help.
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <root>
>
>     <features>
>
>         <feature code="5521" text="Cryopreserved"/>
>
>         <feature code="6751" text="Assigned HCPCS code"/>
>
>         <feature code="5551" text="Shelf life greater than 2 years"/>
>
>         <list count="3"/>
>
>     </features>
>
> </root>
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>
>     xmlns:xs="http://www.w3.org/2001/XMLSchema";
>
>     xmlns:math="http://www.w3.org/2005/xpath-functions/math";
>
>     exclude-result-prefixes="xs math"
>
>     version="3.0" expand-text="yes">
>
>
>
>     <xsl:output indent="yes"/>
>
>
>
>     <xsl:template match="/root">
>
>         <xsl:variable name="features" as="node()*">
>
>             <xsl:perform-sort select="features/feature">
>
>                 <xsl:sort select="@text"/>
>
>             </xsl:perform-sort>
>
>         </xsl:variable>
>
>         <xsl:for-each select="1 to count($features)">
>
>             <xsl:message>{position()}</xsl:message>
>
>             <!-- Why does this return all three... -->
>
>             <xsl:message>{$features[position()]/@code}</xsl:message>
>
>             <!-- while this one returns one? -->
>
>             <xsl:message>{$features[1]/@code}</xsl:message>
>
>         </xsl:for-each>
>
>     </xsl:template>
>
>
>
> </xsl:stylesheet>
>
>
>
> Thank you!
>
> Rick
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/2739265> (by
> email <>)

Current Thread