Re: [xsl] escaping ampersands in replace function

Subject: Re: [xsl] escaping ampersands in replace function
From: Mario Madunic <hajduk@xxxxxxxx>
Date: Tue, 4 Sep 2007 10:05:26 -0700
Not all fragments will contain an &amp;. Franklin &amp; Jefferson will still be
output as Franklin &amp; Jefferson and not Franklin and Jefferson

here is an XML fragment

<bodyContent>
<p>Tagged the World of Franklin &amp; Jefferson," display was created by general
Charles and Ray Eames fof the American Revolution centennial Administration, a
ernment organization</p>
<p>Show will go on to Warsaw and London, then proceed to the Museum of Modern
Art in N.Y. Later it is to be exhibited in Chicago and San Francisco.</p>
</bodyContent>

the XSLT fragment

<xsl:variable name="l_TempBodyContent">
<xsl:for-each select="body/node()">
<xsl:choose>
<xsl:when test="position() = 1"><xsl:value-of select="." /></xsl:when>
<xsl:otherwise><xsl:value-of select="concat(' ', .)" /></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>

<xsl:variable name="l_BodyContent" select="replace($l_TempBodyContent, '&amp;',
'and')" />

Marijan (Mario) Madunic

Quoting David Carlisle <davidc@xxxxxxxxx>:

> 
> 
> > replace($l_TempString,'&','and')
> > get an error message stating the & must be followed by an entity
> > reference
> 
> yes, that's not a well formed XML fragment.
> 
> 
> > replace($l_TempString,'&amp;','and') and
> replace($l_TempString,'&amp;amp;','and')
> > the amp is not replaced.
> 
> so presumably $l_TempString does not contain a substring that matches
> either "&" or "&amp;".
> 
> so what is $l_TempString  ? ie what does <xsl:value-of
> select="$l_TempString"/> produce.
> 
> It's always helpful to post a complete xml input and complet xslt
> stylesheet (in this case, each only need be two or three lines long,
> 
> 
> David
> 
> ________________________________________________________________________
> The Numerical Algorithms Group Ltd is a company registered in England
> and Wales with company number 1249803. The registered office is:
> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
> 
> This e-mail has been scanned for all viruses by Star. The service is
> powered by MessageLabs. 
> ________________________________________________________________________

Current Thread