带符号 ( ) 的 xpath 属性抛出错误 'XPST0003: No closing ';'找到实体或角色参考'

xpath attribute with ampersand ( ) throws error 'XPST0003: No closing ';' found for entity or character reference'

我正在使用一个依赖 xpath 表达式来收集数据的解决方案。在出现带有特殊字符的数据之前,其中一个表达式工作得很好。

包含数据的 xml 字段示例:

<variable id="name" value="STICKS &amp; STONES"/>    

这是获取数据数据的xpath表达式:

contract/variable[@id \= 'info']/variable[@id \= 'client']/variable[@id \= 'name']/@value

(等号前的反斜杠是应用程序运行所必需的)。

我尝试用 & 符号替换实体表示:

replace(/contract/variable[@id \= 'info']/variable[@id \= 'client']/variable[@id \= 'name']/@value, '&amp;', '&')

它有效,但仅修复了这种特殊情况。我想找到一种方法来处理所有出现的实体表示。

有没有办法 "unescape" 从 xpath 表达式收集的内容?

我想你可以使用 string() 函数来绕过分号问题:

string(contract/variable[@id \= 'info']/variable[@id \= 'client']/variable[@id \= 'name']/@value)

应该输出所需的 STICKS & STONES