Clemens,
You could use keys to identify the elements to output. Thus, your input:
<root>
<sub_a>
<elem_1/>
<elem_2/>
<elem_3/>
</sub_a>
<sub_b>
<elem_1/>
<elem_2/>
<elem_2/>
<elem_2/>
<elem_3/>
</sub_b>
<sub_c>
<elem_1/>
<elem_2/>
<elem_3/>
</sub_c>
</root>
Against this transform:
<?xml version="1.0" encoding="iso8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key match="/*/*" name="kElems" use="*"/>
<xsl:template match="root">
<xsl:copy>
<xsl:for-each select="*">
<xsl:if test="count(key('kElems', .)) != count(*)">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Yields:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sub_b>
<elem_1/>
<elem_2/>
<elem_2/>
<elem_2/>
<elem_3/>
</sub_b>
</root>
You could again use a key to identify and eliminate elements such as
<elem_1>. In fact *I* should do that, to match your required output ... but
I need to use a composite key for that ... and it isn't coming to me right
away. If somebody else has more ready insight, please post.
Regards,
--A
From: "Prerovsky, Clemens" <Clemens(_dot_)Prerovsky(_at_)beko(_dot_)at>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: [xsl] only display if subnodes occur more than once
Date: Thu, 23 Jun 2005 12:06:42 +0200
Hi,
I'm stuck again with my XSL. My XML Structure looks like:
<root>
<sub_a>
<elem_1/>
<elem_2/>
<elem_3/>
</sub_a>
<sub_b>
<elem_1/>
<elem_2/>
<elem_2/>
<elem_2/>
<elem_3/>
</sub_b>
<sub_c>
<elem_1/>
<elem_2/>
<elem_3/>
</sub_c>
</root>
The thing I want to do is display the element sub_b, because it has
subnodes which occur more than once (elem_2). I really have no idea how
to test for this - playing around for nearly two hours now. Im using a
loop like <xsl:for-each select="/root/*"> and the output should look
like
sub_b (this is the header)
elem_2
elem_2 (these are the 3 values of elem_2)
elem_2
Best regards,
Clemens Prerovsky
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
--~------------------------------------------------------------------
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>
--~--