xsl-list
[Top] [All Lists]

RE: xsl:variable

2003-03-06 11:33:33
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(_at_)mulberrytech(_dot_)com
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



<Prev in Thread] Current Thread [Next in Thread>