|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Finding Unique Nodes
> -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Peter Davis > Sent: Tuesday, April 02, 2002 1:25 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: Finding Unique Nodes > > > On Monday 01 April 2002 21:04, Ivan Pedruzzi wrote: > > <?xml version="1.0" encoding="UTF-8"?> > > <xsl:stylesheet version="1.0" > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:output method="xml"/> > > ? <xsl:template match="/"> > > ? ? <list> > > ? ? <xsl:for-each select="list/item"> > > ? ? <xsl:sort select="list/item"/> > > This sort requires that "/list/item/list/item" exists, "list/item" is > relative to the "list/item" that was selected in the > for-each. To do what I > think you are trying to do, you want: > > <xsl:sort select="."/> > > > ????????? <xsl:if test="not(following-sibling::item = .)"> > Right. > The test for following-sibling::item is applied on the source > document, *not* > the document after it has been sorted. So the sorting will > not affect > anything. Also, this is the same as: > > not(./following-sibling::item = .) > > which is always true, because a node is never a > following-sibling of itself. > Therefore, the next line (<item><xsl:value-of > select="."/></item>) will > always be executed. This is interesting because I run the script with MSXML3/MSXML4/XalanJ/Stylus and all of them print unique values If you run this stylesheet you can see yourself <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <list> <xsl:for-each select="list/item"> <test><xsl:value-of select="."/>=<xsl:value-of select="following-sibling::item"/>=<xsl:value-of select="not(following-sibling::item = .)"/></test> </xsl:for-each> </list> </xsl:template> </xsl:stylesheet> I also run your stylesheet (below) using MSXML3/MSXML4/XalanJ/Stylus the result is always 0 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:key name="item" match="item" use="string(.)"/> <xsl:template match="/"> <xsl:text>Unique items: </xsl:text> <xsl:value-of select="count(list/item[count(key('item', string(.)) | .) = 1])"/> </xsl:template> </xsl:stylesheet> 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
|






