Re: [xsl] Copy and group XML

Subject: Re: [xsl] Copy and group XML
From: Brandon Ibach <brandon.ibach@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 26 Jan 2011 13:46:54 -0500
This problem is a bit under-specified.  Where should non-scene
material fall in the output?  Inside the acts, between the acts?

-Brandon :)


On Wed, Jan 26, 2011 at 1:22 PM, Jacobus Reyneke
<jacobusreyneke@xxxxxxxxx> wrote:
> 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