Re: [xsl] Replacing character entities

Subject: Re: [xsl] Replacing character entities
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Mon, 14 Feb 2005 19:38:30 +0100
Tempore 19:07:22, die 02/14/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Wagstaff, Jason <WagstaffJ@xxxxxxxxxxxx>:

I have a text block that contains &#13; &#13; wherever the user wanted
it to look like a paragraph break. I don't any have control over the
input.

Any ideas on how can I replace &#13; with <br/>? Or better still, use
the &#13 to identify the paragraphs and wrap each <p>paragraph</p>?
Hi,

Let's assume you have an XML with this node in it:

<text>Line1&#13;Line2&#13;other content</text>


And the desired output would be: <div> <p>Line1</p> <p>Line2</p> <p>other content</p> </div>


This can be achieved by applying a stylesheet like this:


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:output method="xml" indent="yes"/>


<xsl:template match="text">
<div>
	<xsl:call-template name="par"/>
</div>
</xsl:template>

<xsl:template name="par">
	<xsl:param name="text" select="."/>
	<p>
		<xsl:value-of select="substring-before(concat($text,'&#13;'),'&#13;')"/>
	</p>
	<xsl:if test="contains($text,'&#13;')">
		<xsl:call-template name="par">
			<xsl:with-param name="text">
				<xsl:value-of select="substring-after($text,'&#13;')"/>
			</xsl:with-param>
		</xsl:call-template>
	</xsl:if>
</xsl:template>

</xsl:stylesheet>


regards, -- Joris Gillis (http://www.ticalc.org/cgi-bin/acct-view.cgi?userid=38041) "Scio me nihil scire" - Socrates

Current Thread