RE: [xsl] Unicode Search/Replace

Subject: RE: [xsl] Unicode Search/Replace
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 14 May 2008 14:23:20 +0100
Personally, I would put the replace code in a function, and ensure that is
called whenever you want to process a relevant string.

And I wouldn't do it using character maps, I would generate the actual
Unicode character using codepoints-to-string(), and leave the serializer to
entitize it on output.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Pankaj Chaturvedi [mailto:pankaj.chaturvedi@xxxxxxxxx] 
> Sent: 14 May 2008 14:17
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Unicode Search/Replace
> 
> Thanks Michael. Are you suggesting me to use something else 
> other then <xsl:value-of>, as I want to do search/replace 
> only on text <xsl:template match="text()"/>.
> 
> Thanks.
> 
> 
> 
>  -----Original Message-----
> From: 	Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent:	Wednesday, May 14, 2008 5:36 PM
> To:	xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:	RE: [xsl] Unicode Search/Replace
> 
> 
> The code in your <xsl:template match="text()"/> is only 
> executed if you apply-templates to text nodes. It is not 
> evaluated if you process the contents of text nodes using 
> xsl:value-of.
> 
> Michael Kay
> http://www.saxonica.com/
> 
> > -----Original Message-----
> > From: Pankaj Chaturvedi [mailto:pankaj.chaturvedi@xxxxxxxxx]
> > Sent: 14 May 2008 12:53
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: [xsl] Unicode Search/Replace
> >
> > Hi all,
> >
> > I am not sure whether I asked this before, but let me take 
> chance. I 
> > am using the below for search/replace all the Unicode 
> entities in my 
> > output from [#x....] to &#x....; form.
> > Everything works perfect except the cases where I am using 
> the Xpath 
> > fuctions like "substring", "substring-before", 
> "substring-after" etc, 
> > and the resulting outputs comes out to be again [#x....] format.
> >
> >
> > For example If I have the below markup
> >
> > <root>
> > <coden>xxx xxx &hyphen; xxx xx, Vol. 22, No. 1, January 2008, pp.
> > 93-104</coden>
> > </root>
> >
> > and if I use in <root>	<xsl:value-of
> > select="substring-before(./coden,
> > ',')"/>
> >
> > I am getting the output like xxx xxx [#x002d] xxx xx while I would 
> > like xxx xxx &#x002d; xxx xx
> >
> > <!--  Search Replace  -->
> >
> > 	<xsl:character-map name="searchreplace">
> > 		<xsl:output-character character="&#xE000;"
> > string="&amp;"/>
> > 	</xsl:character-map>
> > 	<xsl:template match="text()">
> > 		<xsl:sequence select="replace(.,
> > '\[#x([0-9A-Za-z]+)\]', '&#xE000;#x$1;')"/>
> > 	</xsl:template>
> >
> >
> > It seems search/replace does not works on text where these are 
> > functions are used. Any suggestions how to get this done.
> >
> >
> > Best,
> >
> > Pankaj
> >
> > <HTML><BODY><P><hr size=1></P>
> > <P><STRONG>
> >
> > Confidentiality Notice:" This message and any attachment(s) 
> contained 
> > here are information that is confidential, proprietary to 
> IDS Infotech 
> > Ltd. and its customers.
> > Contents may be privileged or otherwise protected by law. The 
> > information is solely intended for the individual or the 
> entity it is 
> > addressed to. If you are not the intended recipient of this 
> message, 
> > you are not authorized to read, forward, print, retain, copy or 
> > disseminate this message or any part of it. If you have 
> received this 
> > e-mail in error, please notify the sender immediately by 
> return e-mail 
> > and delete it from your computer."
> >
> > </STRONG></P></BODY></HTML>

Current Thread