Re: [xsl] simple XPath question

Subject: Re: [xsl] simple XPath question
From: James Melton <james.melton@xxxxxxxxxxx>
Date: Tue, 03 Jul 2001 09:14:40 -0400

Your description finally makes my output comprehensible. The number I'm
displaying with <xsl:copy-of select="position()"/> inside the template
refers to the position in the node list generated by
<xsl:apply-templates select="item/country"/>. That's why the
non-intuitive numbering (US->1, Canada->3) in my output below.

Did the language designers realize that subtle notions of context
combined with implicit referents (e.g. the node list referent for
position()) would be very confusing?


Jeni Tennison wrote:
> If
> you select nodes to apply templates to:
> <xsl:template match="warehouse">
>   <xsl:apply-templates select="item/country" />
> </xsl:template>
> then within the template for those nodes, the current node list
> contains all the country children of the item children of the
> warehouse element.  
> [...]
> When you *match* nodes with a pattern, then position() gives the
> position of the node amongst its similar siblings - it always uses the
> source tree to work out the position because match patterns have no
> concept of context node lists. 

James Melton wrote:
> As another bizarre bit, I tested this by adding a country after the "US"
> country, and left in your <xsl:copy-of select='position()'/> code. I
> found that the number displayed corresponds to the number of countries,
> and not the number of "first" countries; i.e. with this input:
> <?xml version='1.0'?>
> <warehouse>
>   <item>
>     <name>orange</name>
>     <country>US</country>
>     <country>UK</country>
>   </item>
>   <item>
>     <name>ice wine</name>
>     <country>Canada</country><country>UK</country>
>   </item>
> </warehouse>
> I get this output:
> <?xml version="1.0" encoding="UTF-8"?>
> <storage>
> <first-country>1<country>US</country>
> </first-country>
> <country>UK</country>
> <first-country>3<country>Canada</country>
> </first-country>
> <country>UK</country>
> </storage>

James Melton                 CyLogix
609.750.5190                 609.750.5100

 XSL-List info and archive:

Current Thread