XSLT用于清理数据

时间:2012-09-02 19:58:20

标签: xml xslt xpath

我打算使用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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

您可以使用replace功能。