|
Subject: [xsl] Question about position() From: "rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 14 May 2024 15:32:55 -0000 |
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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] What is a bulletproof way, Piez, Wendell A. (Fe | Thread | Re: [xsl] Question about position(), David Carlisle d.p.c |
| Re: [xsl] What is a bulletproof way, Liam R. E. Quin liam | Date | Re: [xsl] Question about position(), David Carlisle d.p.c |
| Month |