|
[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: How to loop over duplicate nodes to output it only
Subject: Re: How to loop over duplicate nodes to output it only once
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Thu, 23 May 2002 22:26:38 +0200
|
Hello,
it's a two-level grouping problem. The first one you got, the second one
uses a concatenated key with the key 1 and the grouping element for key
2. Or expressed in XSLT:
<xsl:key name="course" match="course" use="LOCAL_CRSE_CD"/>
<xsl:key name="course2" match="course"
use="concat(LOCAL_CRSE_CD,'::',CRSE_SITE_CD)"/>
<xsl:template match="courses">
<courses>
<xsl:for-each
select="course[count(.|key('course',LOCAL_CRSE_CD)[1])=1]">
<xsl:element name="course">
<xsl:attribute name="test"><xsl:value-of
select="LOCAL_CRSE_CD"/></xsl:attribute>
<coursetypes>
<xsl:for-each
select="key('course',LOCAL_CRSE_CD)[count(.|key('course2',concat(LOCAL_CRSE_CD,'::',CRSE_SITE_CD))[1])=1]">
<coursetypeid>
<xsl:value-of select="CRSE_SITE_CD"/>
</coursetypeid>
</xsl:for-each>
</coursetypes>
</xsl:element>
</xsl:for-each>
</courses>
</xsl:template>
Regards,
Joerg
Uslu, Cihan Y (MED) schrieb:
Hi,
I have the following code and XML fragment. How can I achieve to output
only once of duplicate nodes?
Thanks.
Cihan
XSL code
---------
<xsl:key name="course" match="course" use="LOCAL_CRSE_CD"/>
<xsl:template match="courses">
<courses>
<xsl:for-each select="course[generate-id()=
generate-id(key('course',LOCAL_CRSE_CD)[1])]">
<xsl:element name="course" use-attribute-sets="course1">
<coursetypes>
<xsl:for-each select="key('course',LOCAL_CRSE_CD)">
<xsl:for-each select="CRSE_SITE_CD">
<xsl:if
test="(self::CRSE_SITE_CD)">
<coursetypeid>
<xsl:value-of
select="."/>
</coursetypeid>
</xsl:for-each>
</xsl:for-each>
</coursetypes>
</xsl:element>
</xsl:for-each>
</courses>
</xsl:template
current output:
--------------------
<courses>
<course>
<LOCAL_CRSE_CD>CTD-ECPM</LOCAL_CRSE_CD>
<coursetypes>
<coursetypeid>U</coursetypeid>
<coursetypeid>U</coursetypeid>
</coursetypes>
<course>
desired output:
--------------------
<courses>
<course>
<LOCAL_CRSE_CD>CTD-ECPM</LOCAL_CRSE_CD>
<coursetypes>
<coursetypeid>U</coursetypeid>
</coursetypes>
<course>
...
...
</courses>
XML
---------------------
<courses>
<course num="806">
<LOCAL_CRSE_CD>CTD-ECPM</LOCAL_CRSE_CD>
<CRSE_SITE_CD>U</CRSE_SITE_CD>
</course>
<course num="2499">
<LOCAL_CRSE_CD>CTD-ECPM</LOCAL_CRSE_CD>
<CRSE_SITE_CD>U</CRSE_SITE_CD>
</course>
<course num="1145">
<LOCAL_CRSE_CD>CTD-EQD</LOCAL_CRSE_CD>
<CRSE_SITE_CD>U</CRSE_SITE_CD>
</course>
<course num="1146">
<LOCAL_CRSE_CD>CTD-EQD</LOCAL_CRSE_CD>
<CRSE_SITE_CD>U</CRSE_SITE_CD>
</course>
<course num="2405">
<LOCAL_CRSE_CD>DFSSMS100</LOCAL_CRSE_CD>
<CRSE_SITE_CD>U</CRSE_SITE_CD>
</course>
<course num="2406">
<LOCAL_CRSE_CD>DFSSMS100</LOCAL_CRSE_CD>
<CRSE_SITE_CD>U</CRSE_SITE_CD>
</course>
....
</courses>
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
| RSS 2.0 |
|
| Atom 0.3 |
|
|