Subject: [xsl] Re: Ignoring Duplicates In key() From: "Bob Portnell" <simply.bobp@xxxxxxxxx> Date: Thu, 14 Sep 2006 11:14:41 -0700 |
Hmm. Okay, answer found: http://www.biglist.com/lists/xsl-list/archives/200006/msg00748.html
Sorry for the distraction. BobP
Here's some fun in XSLT 1.0, using variously the MSXML 3.0 or xsltproc processors (result behaviors are the same).
Here's some data...
<factor group="0" > <number>100</number> <components> <component>widget</component> </components> </factor> <factor group="1"> <number>110</number> <components> <component>widget</component> <component>gewgaw</component> </components> </factor> <factor group="1"> <number>112</number> <components> <component>gewgaw</component> </components> </factor>
My need is to create a string of unique "components" in a "group". The original XSLT for this relied on a recursion structure and wasn't successfully blocking duplicates. My notion was to just wait for it to finish all the recursion (for its other needs), and then hit it with a key(), defined thus:
(XSLT fragment)
<xsl:key name="ComponentByGroup" match="component" use="../../@group" />
(and then)
<xsl:variable name="ComponentString"> <xsl:for-each select="key('ComponentByGroup',$group)[not(.=preceding::component)]"> <xsl:sort select="."/> <xsl:if test="position() > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="." /> </xsl:for-each> </xsl:variable>
The desired output would be "gewgaw, widget", but for some reason I'm getting only "widget." When applied to more complex data, in one case where 12 items should be displayed, it's correctly stopping the duplicates but also making two singletons vanish.
The [not(.=preceding::component)] is the basic structure I found for reducing duplicates, but it doesn't seem to play quite nicely with the key() ... it's reducing too many!
Thoughts welcome.
Bob Portnell simply.bobp@xxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Ignoring Duplicates In key(), Bob Portnell | Thread | [xsl] Re: Ignoring Duplicates In ke, Bob Portnell |
Re: [xsl] testing relationships bet, Wolfgang Jeltsch | Date | Re: [xsl] Element name Change for a, Senthilkumaravelan K |
Month |