<!–

replace-string.xsl

Author: John Maurer (jmaurer@hawaii.edu) Date: July 2007 (when I was at National Snow and Ice Data Center)

This Extensible Stylesheet Language for Transformations (XSLT) document takes an input string and outputs it with all $old-string's substituted with the specified $new-string. You can import this XSLT in other XSLT files to call the “replace-string” template for accomplishing this. Here is an example import statement:

<xsl:import href=“replace-string.xsl”/>

For more information on XSLT see:

en.wikipedia.org/wiki/XSLT www.w3.org/TR/xslt

–>

<xsl:stylesheet

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

<xsl:output method="text"/>

<xsl:template name="replace-string">
  <xsl:param name="element"/>
  <xsl:param name="old-string"/>
  <xsl:param name="new-string"/>
  <xsl:variable name="first">
    <xsl:choose>
      <xsl:when test="contains( $element, $old-string )">
        <xsl:value-of select="substring-before( $element, $old-string )"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$element"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:variable name="middle">
    <xsl:choose>
      <xsl:when test="contains( $element, $old-string )">
        <xsl:value-of select="$new-string"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:text></xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:variable name="last">
    <xsl:choose>
      <xsl:when test="contains( $element, $old-string )">
        <xsl:choose>
          <xsl:when test="contains( substring-after( $element, $old-string ), $old-string )">
            <xsl:call-template name="replace-string">
              <xsl:with-param name="element" select="substring-after( $element, $old-string )"/>
              <xsl:with-param name="old-string" select="$old-string"/>
              <xsl:with-param name="new-string" select="$new-string"/>
            </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="substring-after( $element, $old-string )"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:when>
      <xsl:otherwise>
        <xsl:text></xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <!-- Disable output escaping to allow HTML tags to be interpreted: -->
  <xsl:value-of select="$first" disable-output-escaping="yes"/>
  <xsl:value-of select="$middle" disable-output-escaping="yes"/>
  <xsl:value-of select="$last" disable-output-escaping="yes"/>
</xsl:template>

</xsl:stylesheet>