xsl-list
[Top] [All Lists]

Re: xsl:when element test with number

2003-10-24 06:54:14

<xsl:when test="name(.)='my_element'>...</xsl:when>

It's generally better (and much safer if namespaces are around)
to go

<xsl:when test="self::my_element>...</xsl:when>

name() returns an essentially arbitrary result in XSLT.
The system may choose an arbitrary prefix unrelated to any prefix in the
source if the element is in a namespace.

However for you later tests you have to use something like name() but in
that case I would use local-name() as that at least has a defined result.

Jeni's famous test for a number

(number($foo)!=number($foo))

is true if $foo can be cast to a number and false otherwise, as in that
case you get 
NaN != NaN
and NaN is the only thing that is not equal to itself.

so replace $foo by your substring call to extract the bit that is a
number.

Alternatively if the first bit doesn't have any digits, just zap the digits as 
in

test="translate(local-name(),'0123456789','')='my_element_'"

which is true for my_element_5 but also my6_ele5m7ent_5

David

-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

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



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