如何找到所有可能的实体

时间:2014-10-31 14:42:28

标签: xslt

我需要在xml文件中找到一些实体。这些实体可以是十进制,十六进制或命名(普通或我自己的)。

的test.xml

<test>Hello&#44;&nbsp;world&#33;</test>

我尝试使用 test1.xsl

<xsl:template match="//text()">
    <xsl:if test="matches(., '&amp;.*;')">
        <xsl:value-of select="."/>
    </xsl:if>
</xsl:template>

test2.xsl

<xsl:template match="//text()">
    <xsl:variable name="ent"><![CDATA[&.*;]]></xsl:variable>
    <xsl:if test="matches(., $ent)">
        <xsl:value-of select="."/>
    </xsl:if>
</xsl:template>

但没有结果。

有没有办法使用正则表达式查找实体?

也许有一种特殊的文字类型允许使用matches(., _entities_)

之类的内容

1 个答案:

答案 0 :(得分:2)

在XSLT / XPath数据模型中,只有带有Unicode字符的文本节点,使用XSLT / XPath无法知道或查明解析为树的文档的词法标记是否包含Unicode字母字面上或作为字符引用或作为实体引用。所以XSLT不是正确的工具,除非你使用像http://andrewjwelch.com/lexev/这样的预处理器。