RE: [xsl] Testing for Parent Nodes of multiple types

Subject: RE: [xsl] Testing for Parent Nodes of multiple types
From: Nate Austin <naustin@xxxxxxxxxx>
Date: Wed, 14 Mar 2001 16:28:50 -0600
Ciaran-
<xsl:if test="contains('p b i u td',name(..))">
should do the trick.  The only thing that might break it is if you had more
multicharacter parent node names that were valid.  Or if, in this example,
it was possible for 't' or 'd' to come up as invalid parent names because
they would come through as 'true()'.  Basically, names that were substrings
of valid names would break it unless you got into concatenating '|' on each
side like so:
<xsl:if test="contains('|p|b|i|u|td|',concat('|',name(..),'|'))">
but then it starts getting more messy again.
Alternatively, you could embed a variable containing a node-set of valid
elements in your stylesheet and check for an element with a matching name
(or just if namespaces will get in your way, use local-name for all cases). 
Of course, which one works best depends on your use case.  If it is exactly
the five elements that you listed in your example, I'd say the last two
might be overkill, but if you have a bunch of them they may be beneficial.
Hope that helps.

-Nate
naustin@xxxxxxxxxx

The opinions expressed are my own and do not reflect those of International
Decision Systems.

>Date: Wed, 14 Mar 2001 16:36:04 -0800
>From: "Ciaran Byrne" <ciaran.byrne@xxxxxxx>
>Subject: [xsl] Testing for Parent Nodes of multiple types
>
>Hi all,
>	In my content I am testing for the parent of
>my context node. The parent can be one of several different
>elements.
>
>For example, let's say that the parent of the element 'b' can
>be 'p','b','i','u','td'.
>
>At the moment in my xsl:if I have the node test
>
><xsl:if test="parent::p or parent::b or parent::i or parent::u or
>parent::td">
>...
></xsl:if>
>
>
>Is anyone aware of a more efficient way to implement this ?
>
>Thanks,
>Ciaran.

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


Current Thread