|
Subject: Re: [xsl] Grouping while sorting From: "Ragulf Pickaxe" <jawxml@xxxxxxxxxxx> Date: Mon, 22 Nov 2004 11:18:53 +0000 |
Regards, Ragulf Pickaxe
<!-- Data before first pass in two-pass solution --> <?xml version="1.0"> <Root> <Elem GroupID="A" Type1="1" Type2="0" Order="7">A7</Elem> <Elem GroupID="A" Type1="1" Type2="0" Order="5">A5</Elem> <Elem GroupID="B" Type1="0" Type2="0" Order="4">B4</Elem> <Elem GroupID="D" Type1="0" Type2="1" Order="2">D2</Elem> <Elem GroupID="C" Type1="1" Type1="1" Order="4">C4</Elem> <Elem GroupID="B" Type1="0" Type2="0" Order="3">B3</Elem> <Elem GroupID="A" Type1="1" Type2="0" Order="2">A2</Elem> <Elem GroupID="C" Type1="1" Type1="1" Order="1">C1</Elem> <Elem GroupID="D" Type1="0" Type2="1" Order="4">D4</Elem> <Elem GroupID="B" Type1="0" Type2="0" Order="2">B2</Elem> <Elem GroupID="D" Type1="0" Type2="1" Order="3">D3</Elem> <Elem GroupID="A" Type1="1" Type2="0" Order="1">A1</Elem> </Root>
<?xml version="1.0"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="ChooseWhichType1First" select="'1'"/> <xsl:template match="/"> <Output> <xsl:apply-templates select="Root"/> </Output> </xsl:template>
<xsl:template match="Elem"> <xsl:if test="not(preceding-sibling::Elem/@GroupID=current()/@GroupID)"> <Group><xsl:value-of select="@GroupID"/></Group> </xsl:if> <xsl:value-of select="."/> - </xsl:template> </xsl:stylesheet>
Output: <Output> <Group>A</Group>A1 - A2 - A5 - A7 - <Group>C</Group>C1 - C4 - <Group>D</Group>D2 - D3 - D4 - <Group>B</Group>B2 - B3 - B4 - </Output>
<xsl:template match="Root">
<xsl:for-each select="Elem[generate-id(.) =
generate-id(key('elems', @GroupID)[1])]">
<Group><xsl:value-of select="@GroupID" /></Group>
<xsl:for-each select="key('elems', @GroupID)">
<xsl:sort select="@Order" data-type="number" />
<xsl:value-of select="." /> -
</xsl:for-each>
</xsl:for-each>
</xsl:template>| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Grouping while sorting, Jeni Tennison | Thread | Re: [xsl] Grouping while sorting, Ragulf Pickaxe |
| [xsl] Q: to Jeni Tennison regarding, M. David Peterson | Date | [xsl] understanding key usage, Osman Çınar Eren |
| Month |