xsl-list
[Top] [All Lists]

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

2003-10-20 12:54:35
Richard,

I suspected it might be a bit more.

How about

not(/keyword/matches[not(.=current()/matches)])" and
not(/keyword/matches != matches)

Tests true if every keyword/matches is represented in ./matches, and there are no keyword/matches not in ./matches.

Cheers,
Wendell

At 02:35 PM 10/20/2003, you wrote:
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.


======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


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