xsl-list
[Top] [All Lists]

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

2003-10-20 11:35:26
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