[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: how to group nodes by id?
At 2002-12-02 07:48 -0800, Artur Matysiak wrote:
does anybody know how to convert the following XML: Below is a solution using variables and a solution using keys. Take your pick. Grouping algorithms are documented in the FAQ ... what aspects of the documentation did you find confusing? I hope this helps. ...................... Ken T:\ftemp>type artur.xml <elems> <elem id="1"> <elem id="1"/> </elem> <elem id="1"> <elem id="2"/> </elem> <elem id="2"> <elem id="1"/> </elem> <elem id="2"> <elem id="2"/> </elem> </elems> T:\ftemp>type artur.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes"/> <xsl:template match="elems"> <elems> <xsl:variable name="elem-children" select="elem"/> <xsl:for-each select="$elem-children"> <xsl:if test="generate-id(.)= generate-id($elem-children[@id=current()/@id])"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:copy-of select="$elem-children[@id=current()/@id]/node()"/> </xsl:copy> </xsl:if> </xsl:for-each> </elems> </xsl:template> </xsl:stylesheet> T:\ftemp>xt artur.xml artur.xsl <?xml version="1.0" encoding="utf-8"?> <elems> <elem id="1"> <elem id="1"/> <elem id="2"/> </elem> <elem id="2"> <elem id="1"/> <elem id="2"/> </elem> </elems> T:\ftemp>type artur2.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes"/> <xsl:key name="elems" match="elem[elem]" use="@id"/> <xsl:template match="elems"> <elems> <xsl:for-each select="elem[generate-id(.)=generate-id(key('elems',@id))]"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:copy-of select="key('elems',@id)/node()"/> </xsl:copy> </xsl:for-each> </elems> </xsl:template> </xsl:stylesheet> T:\ftemp>saxon artur.xml artur2.xsl <?xml version="1.0" encoding="utf-8"?> <elems> <elem id="1"> <elem id="1"/> <elem id="2"/> </elem> <elem id="2"> <elem id="1"/> <elem id="2"/> </elem> </elems> T:\ftemp> T:\ftemp>
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-10-1 Practical Formatting Using XSL-FO Next conference training: 2002-12-08,03-03,06 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
|