在xml文档中处理Entites

时间:2017-02-27 04:16:59

标签: xml xslt xslt-2.0

在我的源代码中遇到了一些实体

来源xml

<name>&#145; &amp;#145; &amp;</name>

预期输出

<name>&#145; &#145; &amp;</name>

我尝试使用字符映射,但它没有按预期转换。

谢谢

1 个答案:

答案 0 :(得分:2)

**创建一个模板以将所有节点作为文本处理,并将其替换为tokenize值**

<xsl:template match="text()">
    <xsl:for-each select="tokenize(., ' ')">
        <xsl:choose>
            <xsl:when test="matches(., '&amp;#')">
                <xsl:value-of select="replace(., '&amp;#([0-9]+);', concat('&#38;', '#$1;'))" disable-output-escaping="yes"/>
                <xsl:text> </xsl:text>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="."/>
                <xsl:text> </xsl:text>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:template>