Re: [xsl] translating and commenting punctuation [XSLT1.0]

Subject: Re: [xsl] translating and commenting punctuation [XSLT1.0]
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Thu, 24 Feb 2011 12:16:11 +0000
On 24/02/2011 11:59, pankaj.c@xxxxxxxxxxxxxxxxxx wrote:
Hello everybody,

I am trying to translate "," in text to new line while keeping a copy of
it in comment. Some thing like below:

XML
===

<mytext>xxxx, yyyy, zzzzz, ttttt</mytext>

Output Required
==========

<mytext>xxxx<!--,-->
  yyyy<!--,-->
  zzzzz<!--,-->
  ttttt</mytext>

Try


<xsl:template match="mytext">
<xsl:copy>
<xsl:analyze-string select=",">
<xsl:matching-substring>
<xsl:comment><xsl:value-of select="."/></xsl:comment>
<xsl:text>&#xa;</xsl:text>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:copy>
</xsl:template>

Michael Kay
Saxonica


XSLT ====

     <xsl:template match="mytext">
         <xsl:copy>
             <xsl:copy-of select="@*"/>
            <xsl:value-of select="translate(.,',','&#x000A;')"/>
         </xsl:copy>
     </xsl:template>

This does the trick just to get hard enter but of course do not generate
the commented comma. I tried of using concat() along with translate but
that doesn't seems to be working. Shall I need to write another rule for
commenting the commas. I do not wish to do that as this is required for
this element only.

Any clue will be great to get this done. Comment is required just for
repurposing.

Best,
--PC

Current Thread