xsl-list
[Top] [All Lists]

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

2011-02-24 06:18:57
pankaj(_dot_)c(_at_)thomsondigital(_dot_)com 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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--