This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: or predicates
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: bernwardhanssen at web dot de
- Cc: xsl-list at lists dot mulberrytech dot com
- Date: Wed, 6 Feb 2002 15:13:03 +0000
- Subject: Re: [xsl] or predicates
- Organization: Jeni Tennison Consulting Ltd
- References: <200202061442.g16EgSv03232@mailgate5.cinetic.de>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi Bernward,
> I try to put a | inside a predicate but it doesn't work.
The | is the union operator, used to create a union of two node sets.
The operands for the union operator must be node sets. When you do:
> <xsl:apply-templates select="doc[N1='xxx' | N2='yyy']"/>
It's an error because the expressions "N1 = 'xxx'" and "N2 = 'yyy'"
are not node sets. On the other hand:
> Putting | outside the predicate works.
> <xsl:apply-templates select="doc[N1='xxx'] | doc[N2='yyy']"/>
Here the expressions "doc[N1 = 'xxx']" and "doc[N2 = 'yyy']" do
evaluate to node sets (of doc elements), so the union operator can
create a union of doc elements whose N1 child elements equal 'xxx' and
those doc elements whose N2 child elements equal 'yyy'.
If you want 'or', then you should use 'or':
<xsl:apply-templates select="doc[N1 = 'xxx' or N2 = 'yyy']" />
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list