Subject: [xsl] Re: XPATH | union operator question From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Sun, 21 Dec 2003 12:16:11 +0100 |
> 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPATH | union operator qu, Marc Liyanage | Thread | RE: [xsl] XPATH | union operator qu, Andreas L. Delmelle |
Re: [xsl] XPATH | union operator qu, Marc Liyanage | Date | [xsl] preventing output of attribut, David Holden |
Month |