gpt4 book ai didi

xml - xpath 的 text() 不返回自定义实体

转载 作者:行者123 更新时间:2023-12-04 09:54:45 26 4
gpt4 key购买 nike

我有以下 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ELEMENT root (entry*)>
<!ELEMENT entry (#PCDATA)>
<!ENTITY abc "a b c">
<!ENTITY xyz "x y z">
]>
<root>
<entry>&abc;</entry>
<entry>&xyz;</entry>
<entry>text</entry>
</root>

我使用以下命令在其上测试我的 XPath:
xmllint --xpath '...' test.xml

我正在尝试将一些自定义实体与如下所示的 XPath 匹配:
//entry[text() = '&abc;']

但它不匹配任何东西。所以我什至尝试过:
//entry/text()

而唯一的结果是 text从最后一个条目开始,前两个没有。如 text()不返回自定义实体,还有其他的吗?有没有办法只匹配包含 &abc; 的条目?

最佳答案

合规行为

您无法针对 &abc; 进行测试内部通用实体引用,因为 XML 解析器 must substitute当内部通用实体引用出现在 XML 文档的内容中时,内部通用实体引用及其替换文本 ( a b c )。

您可以通过更改 XPath 来查看此操作

//entry[text() = '&abc;']

什么都不选择
//entry[text() = 'a b c']

选择 entry包含替换文本的元素。

替换文本应该作为文本节点可用,所以
//entry/text()

选择三个文本节点:
a b c
x y z
text

xmllint 的行为

xmllint 获得此预期行为,使用(奇怪的名字) --noent旗帜。

关于xml - xpath 的 text() 不返回自定义实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61943452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com