Subject: Re: [xsl] xslt 2 grouping From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Thu, 11 Jul 2002 10:58:43 -0400 |
With the following XML I'm trying to group and find uniques
<p> <el att='a'>x</el> <el att='b'>x</el> <el att='c'>x</el> <el att='d'>y</el> </p> I have about 1200 lines of this, so keys are out.
I want to find all the el elements with content 'a' which have *different* att attribute values,
to produce
<el name='x'>a b c </el>
I.e. list x, together with all the attributes att which are different.
I'm guessing its a good one for xslt 2, for-each and group-by, but I'm stumped on the syntax.
T:\ftemp>type dave.xml <p> <el att='a'>x</el> <el att='b'>x</el> <el att='c'>x</el> <el att='d'>y</el> </p>
T:\ftemp>type dave.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="/"> <xsl:variable name="allnames" select="/p/el"/> <xsl:for-each select="$allnames"> <xsl:if test="generate-id(.)=generate-id($allnames[.=current()])"> <el name="{.}"> <xsl:variable name="allatts" select="$allnames[.=current()]"/> <xsl:for-each select="$allatts"> <xsl:if test="generate-id(.)= generate-id($allatts[@att=current()/@att])"> <xsl:value-of select="@att"/> <xsl:text> </xsl:text> </xsl:if> </xsl:for-each> </el> </xsl:if> </xsl:for-each> </xsl:template>
T:\ftemp>xt dave.xml dave.xsl <?xml version="1.0" encoding="utf-8"?> <el name="x">a b c </el> <el name="y">d </el>
-- Upcoming: 3-days XSLT/XPath and/or 2-days XSL-FO:Sep 30-Oct 4,2002
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 (Fax:-0995) ISBN 0-13-065196-6 Definitive XSLT and XPath ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath ISBN 1-894049-07-1 Practical Formatting Using XSLFO XSL/XML/DSSSL/SGML/OmniMark services, books (electronic, printed), articles, training (instructor-live,Internet-live,web/CD,licensed) Next public training: 2002-08-05,26,27,09-30,10-03
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] xslt 2 grouping, Michael Kay | Thread | RE: [xsl] xslt 2 grouping, DPawson |
[xsl] xslt 2 grouping, DPawson | Date | Re: [xsl] xslt 2 grouping, David Carlisle |
Month |