RE: [xsl] xsl:number

Subject: RE: [xsl] xsl:number
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 2 Dec 2005 10:56:53 -0000
You don't need the second variable, you can write 

test="//someXPath/Condition[number($instance)]/..."

In XSLT 2.0 you can do

<xsl:variable name="instance" as="xs:integer">
     <xsl:number/>
</xsl:variable> 

With simple invocations of xsl:number like this, however, it's often easier
to do

<xsl:variable name="instance" select="count(preceding-sibling::foo)+1"/>

Michael Kay
http://www.saxonica.com/



> -----Original Message-----
> From: Fraser Goffin [mailto:goffinf@xxxxxxxxxxx] 
> Sent: 02 December 2005 10:42
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] xsl:number
> 
> In a stylesheet I am storing the value returned by <xsl:number> in a 
> variable and then using that variable within an XPath 
> expression, thus :-
> 
> <xsl:template match="foo">
>     <xsl:variable name="instance">
>         <xsl:number/>
>     </xsl:variable>
>     <xsl:variable name="instanceNo" select="number($instance)"/>
> 
>     <xsl:choose>
>         <xsl:when 
> test="//someXPath/Condition[$instanceNo]/ItemType/Code) = 
> 'some value'"/>
>         ...
> 
> Is it possible to optimise the assignment to the variable 
> instanceNo to do 
> it in 1 step (rather than using 2 variables) as part of the select ?
> 
> I've tried various combinations but can't seem to find one 
> that works and 
> I'm wondering whether because <xsl:number/> is an instruction 
> it can't be 
> used in that way ??
> 
> Fraser.

Current Thread