Re: [xsl] How to select either ElementA -OR- ElementB in an axis

Subject: Re: [xsl] How to select either ElementA -OR- ElementB in an axis
From: JBryant@xxxxxxxxx
Date: Wed, 15 Jun 2005 14:37:41 -0500
Except that you should steer clear of using name().

Try

<xsl:value-of select="ancestor::*[self::ElementA|self::ElementB][1]"/>

Just tested it with Saxon 8.4.

Bear in mind that "first" is relative to the axis in question. For the 
ancestor axis, that gets the first one relative to the current node and 
walking up the ancestor nodes. Thus, it may very well be the last actual 
value in the sequence, from the perspective of document order.

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)




"Christopher R. Maden" <crism@xxxxxxxxx> 
06/15/2005 02:25 PM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc
"chris" <oneskiingfool@xxxxxxxxx>
Subject
Re: [xsl] How to select either ElementA -OR- ElementB in an axis






chris wrote:
> Thanks for the response.  Are you sure that's correct or am I goofing
> it up somehow?  Using Saxon 8.4, I get an error trying to use your
> solution...

No, that won't work.  You need to look at all your ancestors, then find
the closest one that matches your pattern:

ancestor::*[name() = 'A' or name() = 'B'][1]

HTH,
Chris
-- 
Christopher R. Maden, Principal Consultant, crism consulting
XML-SGML-HTML-DTDs-schemas-XSL-DSSSL-conversion-training-ebooks-B2B
<URL: http://crism.maden.org/consulting/ >
PGP Fingerprint: BBA6 4085 DED0 E176 D6D4  5DFC AC52 F825 AFEC 58DA

Current Thread