[xsl] RE: XPath: selecting matching nodes in two node-sets

Subject: [xsl] RE: XPath: selecting matching nodes in two node-sets
From: Richard Lewis <richard.lewis@xxxxxxxxx>
Date: Mon, 20 Oct 2003 19:35:26 +0100
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


Current Thread