RE: [xsl] xsl:variable

Subject: RE: [xsl] xsl:variable
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 06 Mar 2003 13:33:33 -0500
At 11:59 AM 3/6/2003, you wrote:
I think this'll work, I've done something similar:

<xsl:template match="category">
        <xsl:variable name="iteration">
                <xsl:number />
        </xsl:variable>
        <xsl:value-of select="iteration" />
</xsl:template>

number will be incremented every time that template executed (at least it works with MSXML 4).

Not really. Really, a number will be assigned based on the position of the counted node in the source tree. Unless it says otherwise, the node counted by an <xsl:number/> instruction is the current node (here the <category>). Here it works because the nodes are processed in (or as if they were in) document order.


To see what I mean and why it may matter, consider what should happen if the apply-templates that invokes this template sorts the nodes, as in:

<xsl:apply-templates select="category">
  <xsl:sort select="."/>
</xsl:apply-templates>

...and then try it and see...

(Nonetheless: using <xsl:number/> to assign a number is often a good way to achieve a goal for which you'd use a counter in another language: about that Craig is perfectly correct.)

Cheers,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread