[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] Copy and group XML


Subject: [xsl] Copy and group XML
From: Jacobus Reyneke <jacobusreyneke@xxxxxxxxx>
Date: Wed, 26 Jan 2011 20:22:44 +0200

Good day, could someone please tell me what I'm doing wrong here.

I'm trying to copy a XML document with 'play' as route. While doing so
I need to group the 'scene' elements under 'act'. The xsl below works
(almost), but throws out anything that falls under play, but outside
of a scene. I need to preserve (copy) elements that are outside of
'scene'.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:template match="play">
            <xsl:for-each-group select="scene"
                group-by="@act">
                <act>
                    <xsl:for-each select="current-group()">
                        <xsl:copy>
                            <xsl:apply-templates  select="@*|node()"/>
                        </xsl:copy>
                    </xsl:for-each>
                </act>
            </xsl:for-each-group>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

Kind regards,
Jacobus


Current Thread
Keywords