我正在阅读和测试 XQuery 以及我使用 BaseX(www.basex.org) 和 saxon-HE 9.4.0.6N 的测试工具。对于以下简单的 XML 文件 - sample.xml 没有附加架构:
<rootab>
<l1>
<items p="a">
<itema x1="10" id="abc">testa</itema>
<itemb x1="10" id="dfe">testb</itemb>
<itemc x1="10" id="jgh">testc</itemc>
</items>
</l1>
<l2>
<items p="b">
<itema x1="10" xidref="abc">testa</itema>
<itemc x1="10" xidref="jgh">testc</itemc>
<itemd x1="10" xidref="abc">testA101</itemd>
<iteme x1="10" xidref="jgh">testB202</iteme>
</items>
</l2>
</rootab>
在 Basex_GUI 中,如果我输入以下 XPath 表达式://idref("abc")/..
结果是: <itema x1="10" xidref="abc">testa</itema>
在 BaseX_GUI 中,如果我添加简单的 XQuery 表达式:
for $x in doc('sample.xml')//idref("abc")/..
return <aaa>{$x}</aaa>
结果是:
<aaa>
<itema x1="10" xidref="abc">testa</itema>
</aaa>
<aaa>
<itemd x1="10" xidref="abc">testA101</itemd>
</aaa>
q1) 为什么 XPath 表达式只返回一个节点?我期待两个...
在 Saxon 中,通过使用以下 xql 文件:
<test>
{
doc('sample.xml')//idref("abc")/..
}
</test>
或 XQuery 表达式,我通过运行以下命令收到相同的结果query sample.xql
:
<?xml version="1.0" encoding="UTF-8"?><test/>
q2) 我的撒克逊测试出了什么问题?
预先感谢您的帮助!