<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