|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XPath: selecting matching nodes in two node-sets
> I have the following document: > > <results> > <keywords> > <matches> ...</matches> > ... > </keywords> > <item> > ...various elements... > <matches> ...</matches> > <matches> ...</matches> > ... > </item> > <item> ....</item> > ... > </results> > > (where <matches> elements contain the keywords themselves, CDATA). > > and what I need is an XPath expression which selects all the <item> s > which have the same set of <matches /> elements as in the <keywords> > node. > (Note: there may be repetition of <matches /> s in <item>s but not in > <keywords> ) This transformation: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template match="/"> <xsl:variable name="vItems" select="/*/item"/> <xsl:for-each select="$vItems"> <xsl:copy-of select= "self::* [not(/*/keywords/matches [not(. = current()/matches)] ) and not(matches[not(. = /*/keywords/matches)]) ]"/> </xsl:for-each> </xsl:template> </xsl:stylesheet> when applied on this source.xml (,which I find representative for your problem): <results> <keywords> <matches>k1</matches> <matches>k2</matches> <matches>k3</matches> <matches>k4</matches> <matches>k5</matches> </keywords> <item> <matches>k3</matches> <matches>k5</matches> </item> <item> <matches>k4</matches> <matches>k2</matches> <matches>k3</matches> <matches>k1</matches> <matches>k5</matches> </item> <item> <matches>k1</matches> <matches>k2</matches> <matches>k3</matches> <matches>k6</matches> <matches>k5</matches> <matches>k4</matches> </item> <item> <matches>k1</matches> <matches>k6</matches> </item> <item> <matches>k3</matches> <matches>k5</matches> <matches>k3</matches> <matches>k2</matches> <matches>k1</matches> <matches>k2</matches> <matches>k4</matches> <matches>k5</matches> </item> </results> produces the wanted result: <item> <matches>k4</matches> <matches>k2</matches> <matches>k3</matches> <matches>k1</matches> <matches>k5</matches> </item> <item> <matches>k3</matches> <matches>k5</matches> <matches>k3</matches> <matches>k2</matches> <matches>k1</matches> <matches>k2</matches> <matches>k4</matches> <matches>k5</matches> </item> ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






