Subject: Re: [xsl] Nested grouping question From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Mon, 05 Jan 2004 11:14:08 -0500 |
I've got an XML file organized in one way that I'm trying to convert to match the organization of other files that I deal with. I want the file hierarchy to be:
<game> <state> <user/> </state> </game>
There are many games, states, and users.
The file that I'm trying to convert is organized by user. I can do grouping to determine the states and games, but it seems like I need to do redundant grouping to do the conversion. Has anyone does anything similar? I've got samples of the input XML and the desired XML below. Any suggestions are appreciated...
t:\ftemp>type andrew.xml <?xml version="1.0" encoding="UTF-8"?> <report> <user> <name>Bill</name> <state>MT</state> <game>Halo</game> </user> <user> <name>Joe</name> <state>NJ</state> <game>Halo</game> </user> <user> <name>Joe</name> <state>NJ</state> <game>PGR 2</game> </user> <user> <name>Joe</name> <state>MT</state> <game>Halo</game> </user> <user> <name>Jim</name> <state>AZ</state> <game>PGR 2</game> </user> <user> <name>Bill</name> <state>IN</state> <game>XIII</game> </user> <user> <name>Sue</name> <state>IN</state> <game>Halo</game> </user> <user> <name>Kim</name> <state>AZ</state> <game>PGR 2</game> </user> <user> <name>Pat</name> <state>AZ</state> <game>XIII</game> </user> <user> <name>Ed</name> <state>AZ</state> <game>PGR 2</game> </user> <user> <name>Neo</name> <state>MT</state> <game>Halo</game> </user> <user> <name>Mary</name> <state>IN</state> <game>Halo</game> </user> <user> <name>Jen</name> <state>MT</state> <game>XIII</game> </user> <user> <name>Thor</name> <state>NJ</state> <game>XIII</game> </user> </report>
t:\ftemp>type andrew.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/"> <report> <xsl:variable name="games" select="/*/user"/> <xsl:for-each select="$games"> <xsl:if test="generate-id(.)=generate-id($games[game=current()/game])"> <game title="{game}"> <xsl:variable name="states" select="$games[game=current()/game]"/> <xsl:for-each select="$states"> <xsl:if test="generate-id(.)= generate-id($states[state=current()/state])"> <state name="{state}"> <xsl:for-each select="$states[state=current()/state]"> <user name="{name}"/> </xsl:for-each> </state> </xsl:if> </xsl:for-each> </game> </xsl:if> </xsl:for-each> </report> </xsl:template>
</xsl:stylesheet> t:\ftemp>saxon andrew.xml andrew.xsl <?xml version="1.0" encoding="utf-8"?> <report> <game title="Halo"> <state name="MT"> <user name="Bill"/> <user name="Joe"/> <user name="Neo"/> </state> <state name="NJ"> <user name="Joe"/> </state> <state name="IN"> <user name="Sue"/> <user name="Mary"/> </state> </game> <game title="PGR 2"> <state name="NJ"> <user name="Joe"/> </state> <state name="AZ"> <user name="Jim"/> <user name="Kim"/> <user name="Ed"/> </state> </game> <game title="XIII"> <state name="IN"> <user name="Bill"/> </state> <state name="AZ"> <user name="Pat"/> </state> <state name="MT"> <user name="Jen"/> </state> <state name="NJ"> <user name="Thor"/> </state> </game> </report>
-- North America (Washington, DC): 3-day XSLT/2-day XSL-FO 2004-02-09 Instructor-led on-site corporate, government & user group training for XSLT and XSL-FO world-wide: please contact us for the details
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) ISBN 0-13-065196-6 Definitive XSLT and XPath ISBN 0-13-140374-5 Definitive XSL-FO ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath ISBN 1-894049-11-X Practical Formatting Using XSL-FO Member of the XML Guild of Practitioners: http://XMLGuild.info Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Nested grouping question, Michael Kay | Thread | Re: [xsl] Nested grouping question, Andrew Kirkpatrick |
[xsl] problem with multiple xsl:sor, kakridge | Date | Re: [xsl] Continue seqlist numberin, G. Ken Holman |
Month |