This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: or predicates


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]