Re: [xsl] FW: Dealing with mixed content

Subject: Re: [xsl] FW: Dealing with mixed content
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Tue, 15 Feb 2005 19:47:34 +0100
Tempore 19:31:36, die 02/15/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Paul Clarke <pclarke@xxxxxxxxxxxxxxxx>:


Apologies inadvance for the 'XSL 101' nature of this question but I'm new to

I receive XML from an automate conversion process, over which I have no


	<block >Text <font font-weight="bold">more text</font> more
text<sr/>more text. <hr/>more text <sr/>more text.</block>

The <sr/> elements can be ignored but the <hr/> element indicates that an
exisitng <P> element should be terminated and a new <P> element started.

From the above sample the output would be:

	<P>Text <f>more text</f> more text more text. </P>
	<P>more text more text</P>


This is a grouping problem. Numerous techniques are available for solving problems like this.

Here you have one:

<xsl:stylesheet xmlns:xsl=""; version="1.0">
<xsl:output method="xml" indent="yes"/>

<xsl:key name="group" match="node()" use="generate-id((.. | preceding-sibling::hr)[last()])"/>

<xsl:template match="block">
		<xsl:for-each select="hr|.">
				<xsl:apply-templates select="key('group',generate-id())"/>

<xsl:template match="sr | hr"/>

<xsl:template match="font">


regards, -- Joris Gillis ( Spread the wiki (

Current Thread