我需要在xml文件中找到一些实体。这些实体可以是十进制,十六进制或命名(普通或我自己的)。
的test.xml
<test>Hello, world!</test>
我尝试使用 test1.xsl
<xsl:template match="//text()">
<xsl:if test="matches(., '&.*;')">
<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_)
?
答案 0 :(得分:2)
在XSLT / XPath数据模型中,只有带有Unicode字符的文本节点,使用XSLT / XPath无法知道或查明解析为树的文档的词法标记是否包含Unicode字母字面上或作为字符引用或作为实体引用。所以XSLT不是正确的工具,除非你使用像http://andrewjwelch.com/lexev/这样的预处理器。