> Using XSL, how can I go from this format:
<T4>
<T4_slip>1</T4_slip>
<T4_slip>2</T4_slip>
<T4_slip>3</T4_slip>
<T4_slip>4</T4_slip>
<T4_summary>20</T4_summary>
<T4_slip>1</T4_slip>
<T4_slip>2</T4_slip>
<T4_slip>3</T4_slip>
<T4_slip>4</T4_slip>
<T4_summary>20</T4_summary>
</T4>
to this format:
<T4>
<group>
<T4_slip>1</T4_slip>
<T4_slip>2</T4_slip>
<T4_slip>3</T4_slip>
<T4_slip>4</T4_slip>
<T4_summary>20</T4_summary>
</group>
<group>
<T4_slip>1</T4_slip>
<T4_slip>2</T4_slip>
<T4_slip>3</T4_slip>
<T4_slip>4</T4_slip>
<T4_summary>20</T4_summary>
</group>
</T4>
In XSLT2.0 , that would be quite easy. (
http://www.w3.org/TR/xslt20/#grouping)
In XSLT1.0 , you have to be more creative. Here's one approach:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="T4">
<T4>
<xsl:apply-templates select="T4_summary" mode="group"/>
</T4>
</xsl:template>
<xsl:template match="T4_summary" mode="group">
<group>
<xsl:apply-templates select="preceding::T4_slip[generate-id(following::T4_summary[1]) = generate-id(current())]"/>
<xsl:apply-templates select="."/>
</group>
</xsl:template>
<xsl:template match="T4/*">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
regards,
--
Joris Gillis (
http://www.ticalc.org/cgi-bin/acct-v...i?userid=38041)
Ceterum censeo XML omnibus esse utendum