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