RE: [xsl] Need help OR'ing in XPATH.

Subject: RE: [xsl] Need help OR'ing in XPATH.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 22 Mar 2006 09:13:44 -0000
Juts translate your English into XPath directly...

> For my contrived example below, I would like to select

select="

> all book nodes 

book

> whose

[

> owner is "aaa"

owner='aaa'

> *or*

or

> which have a chapter whose owner is 
> "aaa",

chapter/owner='aaa']"

Putting that together:

select="book[owner is "aaa" or chapter/owner='aaa']

ALternatively you could write

select="book[owner is "aaa"] | book[chapter/owner='aaa']

The "|" operator here forms the union of two sets.

In both cases the results will be in document order, as required.

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


 and 
> I would like the books to be retrieved in the same general 
> order as the 
> xml document, i.e., the query for the example below would 
> process books 
> with id's 1, 3, 4 (in that order), not 1, 4, 3.
> 
> I can do the XPATH for *either* of the two cases, but don't 
> know how to 
> combine the two for an OR search in my xsl:apply-templates 
> select statement.
> 
> <xsl:a-t select="book[owner='aaa'] or book/chapter[owner='aaa']"/>
> 
> is kind of what I want, but Xalan is complaining that my select 
> attribute is just returning a boolean, so my syntax is 
> apparently wrong.
> 
> Any help would be much appreciated.
> 
> Thanks,
> Glen
> 
> 
> <book id="1">
>      <owner>aaa</owner>
>      <chapter>
>          <owner>bbb</owner>
>      </chapter>
>      <chapter>
>          <owner>ccc</owner>
>      </chapter>
> </book>
> <book id="2">
>      <owner>bbb</owner>
>      <chapter>
>          <owner>bbb</owner>
>      </chapter>
>      <chapter>
>          <owner>ccc</owner>
>      </chapter>
> </book>
> <book id="3">
>      <owner>ccc</owner>
>      <chapter>
>          <owner>aaa</owner>
>      </chapter>
>      <chapter>
>          <owner>ccc</owner>
>      </chapter>
> </book>
> <book id="4">
>      <owner>aaa</owner>
>      <chapter>
>          <owner>bbb</owner>
>      </chapter>
>      <chapter>
>          <owner>ccc</owner>
>      </chapter>
> </book>

Current Thread