Re: [xsl] Trouble understanding how to use replace()

Subject: Re: [xsl] Trouble understanding how to use replace()
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 6 Jan 2006 16:07:25 GMT
> some years since I worked with perl and my regex skills have rusted.

Your problem isn't with regexp it's with XML.


> <xsl:value-of select="replace(req-text,"\"","'")" />

The first system to see that is an XML parser which knows nothing of
xslt or xpath syntax so it looks like

<foo bar="zzzzz"z""z""z"z" />

Which is not a well formed element as you can't have literal " in a
"-delimited attribute value.

you want
replace() with three arguments:
  the xpath  req-text
  the string "
  the string '

so first make XPath strings for the second 2, so you need the xpath
expression

replace(req-text,'"','''')

(this uses XPath2 syntax '' for a ' in a '-delimited xpath string.)

now you need to get that in an XML attribute so you need to XML-quote
the " and use " to delimit the expression

select="replace(req-text,'&quot;','''')"

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread