使用libxml2,有没有办法将标准字符实体(<
,>
,'
,"
,&
)替换为相应的XPath表达式中的字符?
例如,我想这样做:
math[contains(., '1 < 2')
搜索包含1 < 2
item[@id="3" bracket"]
搜索值为3" bracket
(编辑:我在libxml2的documentation about entities中没有看到任何关于XPath的内容。)
(编辑:如果没有办法做到这一点,那么我会接受一个解释为什么不解释.lipxml2在其XML实现中似乎相当彻底,所以我怀疑如果不支持,要么是故意的选择,或者我的建议在某种程度上有问题。)
答案 0 :(得分:2)
不,原因是XPath是在词汇上定义的,与XML无关。 XPath本身可以包含文字<
和&
字符,而不会与XML中的特殊用途相冲突,因此XPath不需要字符实体。
在XML中使用XPath时(例如,在XSLT中),XML解析需要转义<
和&
,并且它是提供应用程序的XML解析器(包括XPath库,带有XPath表达式的字符串值,其中字符实体扩展为其文字定义。