xsl-list
[Top] [All Lists]

RE: RE: XPath: selecting matching nodes in two node-sets

2003-10-20 14:10:54
I guessed correctly what you meant (which is unusual for me) and the
solution I gave you should work.

Michael Kay

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Richard Lewis
Sent: 20 October 2003 19:35
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] RE: XPath: selecting matching nodes in two node-sets


Thanks for the ideas.

It seems I probably haven't made myself clear!

The project I'm working on is a record library.

The top-level method is:

'library.xml' -->
--> 'simple-search.xsl' --> [select 'items' which contain ANY
                                      of the keywords] -->
--> 'results.xml' -->
--> 'display-results.xsl' --> [select 'items' which contain ALL of the
                                      keywords] -->
--> HTML output

The the 'results.xml' document contains a single 'keywords' node:

<keywords>
      <matches>song</matches>
      <matches>medieval</matches>
</keywords>

and any number of 'item' nodes:

<item>
      <id>CD106</id>
      <title>Medieval English Song</title>
      <publisher>Hyperion</publisher>
      <date_published>1998</date_published>
      <matches>song</matches>
      <matches>medieval</matches>
      <matches>song</matches>
      <matches>song</matches>
      <matches>medieval</matches>
      <matches>song</matches>
</item>
<item>
      <id>CD258</id>
      <title>Kevin Volans Songline Quartets</title>
      <publisher>Naxos</publisher>
      <date_published>2003</date_published>
      <matches>song</matches>
      <matches>song</matches>
</item>
(Note: the 'item' nodes in 'library.xml' contain a lot more data)

So what I need is a XPath expression which says:

select 'items' where every 'keywords/matches' is present in 
'./matches'.

so I tried:
"//item[matches = //keywords/matches]"

but this returned 'items' where any keywords matched.

I think thats it.

Thanks for your help so far and in advance for any further ideas!

Cheers,
Richard

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list