Hello Anton,
Yeah. this solved a lot.
I've forgot one thing, :-(
I still get empty parent nodes that are not filtered, since I left out the
info. that attribute filter is also present on the parent node. It can also
be empty or contain information.
How can I filter that away as well.
<Documents>
<Document id="0001" filter="">
<Article title="Mr"/>
<Article forename="John" filter="food"/>
<Article surname="Smith" filter=""/>
</Document>
<Document id="0002" filter="food">
<Article title="Dr"/>
<Article forename="Amy" filter=""/>
<Article surname="Jones" filter="food"/>
</Document>
</Documents>
Anton, thank you a lot so far. Appreciate your help.
Regards,
Michael
From: Anton Triest <anton(_at_)cking(_dot_)be>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Re: [xslt transform & grouping] Using the Muenchian
Method?
Date: Wed, 29 Sep 2004 22:34:01 +0200
Hi Michael,
Sorry, I was too quick in suggesting to add the filtering test to the
grouping predicate:
<xsl:for-each select="Document/Article
[count(.|key('by-info', @info)[1])=1 and (@filter='food')]">
That worked with my sample input, but more out of coincidence.
The filter test actually belongs in the next statement:
<xsl:template match="Documents">
<Documents>
<xsl:for-each select="Document/Article[count(.|key('by-info',
@info)[1])=1]">
<Document name="{(_at_)info}">
<xsl:copy-of select="key('by-info',
@info)[(_at_)filter='food']"/>
</Document>
</xsl:for-each>
</Documents>
</xsl:template>
Hope that helps better :)
Anton
--+------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
hthttp://messenger.msn.click-url.com/go/onm00200471ave/direct/01/