如何替换 XPath 中的字符实体?

How to replace character entities in XPath?

使用 libxml2,有没有办法用它们在 XPath 表达式中的对应字符?

例如,我想这样做:

libxml2 在解析 XML 时默认会方便地替换这些实体,但在计算 XPath 表达式时不会。有没有办法启用 XPath 的替换?

(编辑:我在 libxml2 的 documentation about entities 中没有看到任何关于 XPath 的信息。)

(编辑:如果没有办法做到这一点,那么我会接受一个解释为什么不这样做的答案。libxml2 在 XML 的实现中似乎非常彻底,所以我怀疑如果这个不支持,要么是故意的,要么我的提议有问题。)

不,原因是 XPath 的词法定义独立于 XML。 XPath 本身可以包含文字 <& 字符而不与它们在 XML 中的特殊用途冲突,因此 XPath 不需要字符实体。

当在 XML 中使用 XPaths 时(例如,在 XSLT 中),XML 解析要求对 <& 进行转义,并且它是 XML 解析器,它为应用程序(包括 XPath 库)提供 XPath 表达式的字符串值,其中字符实体被扩展为其文字定义。