如何在XSLT中用单词/字符串替换特殊字符?

时间:2018-04-30 09:15:32

标签: xml xslt xslt-1.0

我想用单词/替换单个and。 这就是我现在所拥有的:

代码:

<xsl:output omit-xml-declaration="yes" indent="yes"/>

!-- identity transform -->

<xsl:template match="node()|@*">

    <xsl:copy>
        xsl:apply-templates select="node()|@*"/>
    </xsl:copy>

</xsl:template>

!-- exception -->
<xsl:template match="*[local-name()='Category']/@CleanName">
    <xsl:attribute name="CleanName">
           <xsl:value-of select="translate('Cd /dvd inlays', '/ ', 'and')" />
    </xsl:attribute>
</xsl:template>

输入:

<Category ID="129" CleanName="Cd /dvd inlays"></Category>

输出:

"Cdnadvdninlays"

给予:

"Cd /dvd inlays"

需要:

"cd and dvd inlays"

1 个答案:

答案 0 :(得分:2)

translate()用单个字符替换单个字符,而不是用字符串替换单个字符。在您的情况下,您将// Since 'JSON.stringify' hides 'undefined', the code bellow is necessary in // order to display the real param that have invoked the error. JSON.stringify(hash, (k, v) => (v === undefined) ? '__undefined' : v) .replace('"__undefined"', 'undefined') 替换为/,将SPACE替换为a - 而不是您想要的。

您想要n。不幸的是,replace()需要XSLT 2.0。有关XSLT 1.0中的替换功能,请参阅XSLT string replace