RE: [xsl] xsl:when element test with number

Subject: RE: [xsl] xsl:when element test with number
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 24 Oct 2003 17:51:31 +0100
> 
> I have an xsl:when test that is testing for an exact element 
> name: <xsl:when test="name(.)='my_element'>...</xsl:when>
> 
> This works fine if this is all I need, but the problem is 
> that it also needs to test for the possibility of 
> 'my_element_N' where N is any positive number 
> ('my_element_12' for example).  I've tried the following to 
> account for the extra underscore in the element name: 
> <xsl:when test="name(.)='my_element' or starts-with(name(.), 
> 'my_element_')">...</xsl:when>
> 
> This worked until I realized there are names such as 
> 'my_element_data' or 'my_element_information' etc. which are 
> elements I do not want to process here.
> 
> Is there a way to search for exactly 'my_element_N' using 
> number() or some other function so I can test for the 
> possibility of 'my_element_1' or 2 or 3 or 672?  Any 
> suggestions would be appreciated! 

Easy with 2.0, you can do test="matches(name(), 'my_element_[0-9]+')".

In 1.0 you'll have to do something like
string(number(substring-after(name(), 'my_element')) != 'NaN'.

But why are you packing information into the element name anyway? That's
what attributes are for.

Michael Kay


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


Current Thread