apply-string-subst-map — Apply a string-substitution map
This function applies a “string substitution” map. Use it when
you want to do multiple string substitutions on the same target
content. It reads in two things: content
, the
content on which to perform the substitution, and
map.contents
, a node set of
elements (the names of the elements don't matter), with each element
having the following attributes:
oldstring
, a string to
be replacednewstring
, a string with
which to replace oldstring
The function uses map.contents
to
do substitution on content
, and then
returns the modified contents.
This function is a very slightly modified version of Jeni
Tennison’s replace_strings
function in the
multiple string replacements section of Dave Pawson’s
XSLT
FAQ.
The apply-string-subst-map
function is
essentially the same function as the
apply-character-map
function; the only
difference is that in the map that
apply-string-subst-map
expects, oldstring
and newstring
attributes are used instead of
character
and string
attributes.
<xsl:template name="apply-string-subst-map"> <xsl:param name="content"></xsl:param> <xsl:param name="map.contents"></xsl:param> <xsl:variable name="replaced_text"> <xsl:call-template name="string.subst"> <xsl:with-param name="string" select="$content"></xsl:with-param> <xsl:with-param name="target" select="$map.contents[1]/@oldstring"></xsl:with-param> <xsl:with-param name="replacement" select="$map.contents[1]/@newstring"></xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$map.contents[2]"> <xsl:call-template name="apply-string-subst-map"> <xsl:with-param name="content" select="$replaced_text"></xsl:with-param> <xsl:with-param name="map.contents" select="$map.contents[position() > 1]"></xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$replaced_text"></xsl:value-of> </xsl:otherwise> </xsl:choose> </xsl:template>