[xsl] How to split mixed content

Subject: [xsl] How to split mixed content
From: Jesper Tverskov <jesper@xxxxxxxxxxx>
Date: Sun, 15 Feb 2009 12:46:03 +0100
I'm looking for a way to split mixed content. Something like the
tokenize() function but for mixed content. Let us say inside a "p"
element containing escaped markup, real XHTML like "span" elements and
"br" elements.

I want to use the "br" element as splitter.

I have come up with the following solution that seems to work.

    <xsl:template match="p">
        <lines>
            <xsl:for-each-group select="node()" group-starting-with="br">
                <xsl:if test="position() = 1">
                    <line><xsl:copy-of select="current-group()"/></line>
                </xsl:if>
                <xsl:if test="position() > 1">
                <line><xsl:copy-of select="current-group() except  ."/></line>
                  </xsl:if>
            </xsl:for-each-group>
        </lines>
    </xsl:template>

Here is my question:

Is my solution the way to split mixed content or is there an easier or
a more elegant way?


Cheers,
Jesper Tverskov

http://www.xmlkurser.dk
http://www.xmlplease.com

Current Thread