This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
ReRe: in for-each apply-templates doesnot work
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] ReRe: in for-each apply-templates doesnot work
- From: "Yang" <sfyang at unisvr dot net dot tw>
- Date: Thu, 20 Sep 2001 14:50:55 +0800
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi ,Jochen
For your problem, Mike specifically points out this is type of group ;
>This is essentially a grouping problem, where you are only interested in
>groups of size 2 or more. As the grouping key is a compound key (it's not
>the string-value of a node), take a look at Muenchian grouping,
Base on your posted xml and xsl , the following xslt using Muenchian method
with the compound key of attr name0 and name1 is given here for your
reference.
Hope you will find it useful.
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/REC-html40">
<xsl:output method="html" />
<xsl:key name="checkItem" match="row" use="concat(@name0,'::',@name1)" />
<xsl:strip-space elements="*" />
- <xsl:template match="/gentable">
- <xsl:for-each
select="body/row[generate-id(.)=generate-id(key('checkItem',concat(@name0,':
:',@name1))[1])]">
- <xsl:if test="count(key('checkItem',concat(@name0,'::',@name1)))>1">
<br />
(name0:
<xsl:value-of select="@name0" />
name1:
<xsl:value-of select="@name1" />
)
<xsl:text>are duplicated.</xsl:text>
<xsl:text>They are located in</xsl:text>
<br />
<xsl:apply-templates select="key('checkItem',concat(@name0,'::',@name1))"
/>
<br />
</xsl:if>
</xsl:for-each>
</xsl:template>
- <xsl:template match="row">
Line
<xsl:number />
- <xsl:if test="position()!=last()">
<xsl:text>;</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Cheers,
Sun-fu Yang
sfyang@unisvr.net.tw
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list