Just wondering, is there an elegant way of doing something like this in
XQuery?

    <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
                <xsl:output indent="yes"/>
                <xsl:strip-space elements="*"/>

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

                <xsl:template match="P">
                        <xsl:variable name="P" select="."/>
                        <xsl:for-each-group select="node()"
group-starting-with="pg">
                                <xsl:apply-templates select="self::pg"/>
                                <xsl:element name="{node-name($P)}">
                                        <xsl:apply-templates
select="$P/@*|current-group()[not(self::pg)]"/>
                                </xsl:element>
                        </xsl:for-each-group>
                </xsl:template>

    </xsl:stylesheet>

Example input:

<Docs>
    <Doc>
        <P>blah blah blah<pg>1</pg>blah blah</P>
        <P>blah blah blah<pg>2</pg>blah blah</P>
    </Doc>
    <Doc>
        <P>blah blah blah<pg>3</pg>blah blah</P>
        <P>blah blah blah<pg>4</pg>blah blah</P>
    </Doc>
</Docs>

Cheers,
Geert

M.Sc. G.P.H. (Geert) Josten
Senior Developer


Dayon B.V.
Delftechpark 37b
2628 XJ Delft
The Netherlands

T +31 (0)88 26 82 570

[email protected]
www.dayon.nl

De informatie - verzonden in of met dit e-mailbericht - is afkomstig van
Dayon BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan
dit bericht kunnen geen rechten worden ontleend.
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to