2

我打算使用 XSLT 从以下数据中清除一些不需要的符号:

<Cart>
    <Row>
        <Ld>Restaurant/Cafe Bar &amp; Stores J-K,3</Ld>
        <Ln>Restaurant/Cafe Bar &amp; Stores J-K</Ln>
    </Row>
</Cart>

下面的符号怎么去掉

&amp;
/

结果数据将是

<Cart>
    <Row>
        <Ld>Restaurant,Cafe Bar, Stores J-K,3</Ld>
        <Ln>Restaurant, Cafe Bar, Stores J-K</Ln>
    </Row>
</Cart>
4

2 回答 2

3

您可以使用translate()函数:

应用于身份转换以将这些字符替换为,

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

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

    <xsl:template match="text()">
        <xsl:value-of select="translate(., '&amp;/', ',,')"/>
    </xsl:template>
</xsl:stylesheet>

使用 XSLT/XPath 2.0,您可以使用replace()函数,它为查找/替换操作和前导/尾随空格的规范化等提供了更强大的功能。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">

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

    <xsl:template match="text()">
        <xsl:value-of select="replace(., '\s?(&amp;|/)\s?', ', ')"/>
    </xsl:template>
</xsl:stylesheet>
于 2012-09-02T20:09:42.203 回答
0

您可以使用替换功能。

于 2012-09-02T20:07:38.040 回答