|
Subject: Re: [xsl] suppressing duplicate data points contained in xml data From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Tue, 26 Apr 2011 07:25:21 -0400 |
I have a 3 column table that I want to display data coming from and XML file. The data contains duplicates in the first two columns. Is there a way to print the data in the columns only when it changes? In other words, suppress when it's duplicated?
Desired XSL output would be something like: Unfortunately I must stick w/ XSL Version 1.0 as I am running on an AIX FOP engine
~/t/ftemp $ cat david.xml <data> <GROUP dow="Monday" period="morning" description="Alpha One"/> <GROUP dow="Monday" period="morning" description="Alpha Two"/> <GROUP dow="Monday" period="morning" description="Alpha Three"/> <GROUP dow="Tuesday" period="morning" description="Alpha One"/> <GROUP dow="Tuesday" period="morning" description="Alpha Two"/> <GROUP dow="Tuesday" period="afternoon" description="Bravo One"/> <GROUP dow="Tuesday" period="afternoon" description="Bravo Two"/> <GROUP dow="Tuesday" period="afternoon" description="Bravo Three"/> <GROUP dow="Tuesday" period="evening" description="Charlie One"/> <GROUP dow="Tuesday" period="evening" description="Charlie Two"/> <GROUP dow="Tuesday" period="evening" description="Charlie Three"/> <GROUP dow="Tuesday" period="night" description="Delta One"/> <GROUP dow="Tuesday" period="night" description="Delta Two"/> <GROUP dow="Wednesday" period="morning" description="Alpha One"/> <GROUP dow="Wednesday" period="morning" description="Alpha Two"/> </data> ~/t/ftemp $ xslt david.xml david.xsl <?xml version="1.0" encoding="utf-8"?> <result> <level1>Monday</level1> <level2>morning</level2> <level3>Alpha One</level3> <level3>Alpha Two</level3> <level3>Alpha Three</level3> <level1>Tuesday</level1> <level2>morning</level2> <level3>Alpha One</level3> <level3>Alpha Two</level3> <level2>afternoon</level2> <level3>Bravo One</level3> <level3>Bravo Two</level3> <level3>Bravo Three</level3> <level2>evening</level2> <level3>Charlie One</level3> <level3>Charlie Two</level3> <level3>Charlie Three</level3> <level2>night</level2> <level3>Delta One</level3> <level3>Delta Two</level3> <level1>Wednesday</level1> <level2>morning</level2> <level3>Alpha One</level3> <level3>Alpha Two</level3> </result>~/t/ftemp $ cat david.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="data">
<result>
<xsl:variable name="groups" select="GROUP"/>
<xsl:for-each select="$groups">
<xsl:if test="generate-id(.)=
generate-id($groups[@dow=current()/@dow][1])">
<level1><xsl:value-of select="@dow"/></level1>
<xsl:variable name="days"
select="$groups[@dow=current()/@dow]"/>
<xsl:for-each select="$days">
<xsl:if test="generate-id(.)=
generate-id($days[@period=current()/@period][1])">
<level2><xsl:value-of select="@period"/></level2>
<xsl:for-each select="$days[@period=current()/@period]">
<level3><xsl:value-of select="@description"/></level3>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</result>
</xsl:template>-- Contact us for world-wide XML consulting & instructor-led training Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Legal business disclaimers: http://www.CraneSoftwrights.com/legal
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] suppressing duplicate dat, David Carlisle | Thread | [xsl] XSLT transformation using cou, Bubba O'Reily |
| Re: [xsl] suppressing duplicate dat, David Carlisle | Date | [xsl] XSLT transformation using cou, Bubba O'Reily |
| Month |