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: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 15 Jun 2005 22:45:32 +0100
As an alternative to the solutions you've been given, in 2.0 you can write

select="((ancestor::ElementA|ancestor::ElementB)[last()])/foo/bar"

Note the [last()] rather than [1], because the result of a union is in
document order. Because of this, the ancestor::*[self::A|self::B][1]
approach might well be more efficient.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: chris [mailto:oneskiingfool@xxxxxxxxx] 
> Sent: 15 June 2005 19:35
> To: xslt
> Subject: [xsl] How to select either ElementA -OR- ElementB in an axis
> 
> Hello,
> This has me stumped.  I want to do something simple like this (I'll
> keep it short as I think it's self-explanatory)....
> 
> <xsl:variable name="myvar" select="ancestor::(ElementA or 
> ElementB)/foo/bar"/>
> 
> ... where either ElementA or ElementB is selected, whichever is first.
> 
> Any ideas?   I'm using XPath 2.0
> 
> Thanks!

Current Thread