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

Subject: Re: [xsl] translating and commenting punctuation [XSLT1.0]
From: pankaj.c@xxxxxxxxxxxxxxxxxx
Date: Thu, 24 Feb 2011 17:59:44 +0530
Thanks Martin. How can I forget that. Thanks a ton.





Martin Honnen <Martin.Honnen@xxxxxx> 
02/24/11 05:49 PM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

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






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>

Your subject says XSLT 1.0 so here is an XSLT 1.0 approach:

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

   <xsl:template name="replace">
     <xsl:param name="text"/>
     <xsl:param name="char" select="','"/>
     <xsl:choose>
       <xsl:when test="not(contains($text, $char))">
         <xsl:value-of select="$text"/>
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="substring-before($text, $char)"/>
         <xsl:comment>
           <xsl:value-of select="$char"/>
         </xsl:comment>
         <xsl:text>&#10;</xsl:text>
         <xsl:call-template name="replace">
           <xsl:with-param name="text" select="substring-after($text, 
$char)"/>
           <xsl:with-param name="char" select="$char"/>
         </xsl:call-template>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>

   <xsl:template match="mytext">
     <xsl:copy>
       <xsl:call-template name="replace">
         <xsl:with-param name="text" select="."/>
       </xsl:call-template>
     </xsl:copy>
   </xsl:template>

</xsl:stylesheet>
-- 

                 Martin Honnen
                 http://msmvps.com/blogs/martin_honnen/

Current Thread