XSLT版本1替换单引号/双引号

时间:2017-12-22 19:34:11

标签: xslt

我试图在xml

中分别用"'替换单/双引号

我对xsl很新,所以非常感谢有人可以提供帮助

1 个答案:

答案 0 :(得分:0)

对于替换它的动态方法,最好创建单独的模板,其中参数作为输入文本,替换和替换的内容。

因此,在示例输入文本中是:

Your text "contains" some "strange" characters and parts.

在下面的XSL示例中,您可以看到将"(")替换为"'("'):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text"/>
    <!--template to replace-->
    <xsl:template name="template-replace">
        <xsl:param name="param.str"/>
        <xsl:param name="param.to.replace"/>
        <xsl:param name="param.replace.with"/>
        <xsl:choose>
            <xsl:when test="contains($param.str,$param.to.replace)">
                <xsl:value-of select="substring-before($param.str, $param.to.replace)"/>
                <xsl:value-of select="$param.replace.with"/>
                <xsl:call-template name="template-replace">
                    <xsl:with-param name="param.str" select="substring-after($param.str, $param.to.replace)"/>
                    <xsl:with-param name="param.to.replace" select="$param.to.replace"/>
                    <xsl:with-param name="param.replace.with" select="$param.replace.with"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$param.str"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

    <xsl:template match="/">
        <xsl:call-template name="template-replace">
            <!--put your text with quotes-->
            <xsl:with-param name="param.str">Your text "contains" some "strange" characters and parts.</xsl:with-param>
            <!--put quote to replace-->
            <xsl:with-param name="param.to.replace">"</xsl:with-param>
            <!--put quot and apos to replace with-->
            <xsl:with-param name="param.replace.with">"'</xsl:with-param>
        </xsl:call-template>
    </xsl:template>   
</xsl:stylesheet>

然后更换的结果如下:

Your text "'contains"' some "'strange"' characters and parts.

希望它会有所帮助。