[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XPATH | union operator question
> I have a similar problem with this evaluation in document order: > > > <things> > <thing/> > <thing xml:lang="de"/> > <thing xml:lang="en"/> > </things> > > > <value-of select="(thing[lang($mylang)] | thing)[1]"/> > > > What I tried with this was to get a specific thing with the requested > language $mylang, and if no such element exists, to use the generic > thing without the xml:lang attribute. Obviously this does not work, I > always get the <thing/> first. > > Is there an elegant solution to this? The following Xpath expression selects a node-set $ns1 if a condition $p is true and selects a node-set $ns2 if the same condition $p is not true: $ns1[$p] | $ns2[not($p)] When it is known that the condition $p is that $ns1 must be non-empty, the above XPath expression can be simplified to the following: $ns1 | $ns2[not($ns1)] In this specific case we'll have: /*/thing[lang($mylang)] | /*/thing[1][not(/*/thing[lang($mylang)] )] Dimitre Novatchev. FXSL developer http://fxsl.sourceforge.net/ -- the home of FXSL Resume: http://fxsl.sf.net/DNovatchev/Resume/Res.html XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|