私は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>
単純な XQuery 式を追加すると、BaseX_GUI に次のようになります。
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 式が 1 つのノードのみを返したのはなぜですか? 2つ期待してたのに…
Saxon では、次の xql ファイルを使用します。
<test>
{
doc('sample.xml')//idref("abc")/..
}
</test>
または XQuery 式、次のコマンドを実行して同じ結果を受け取りますquery sample.xql
。
<?xml version="1.0" encoding="UTF-8"?><test/>
q2) サクソンテストのどこが悪いのですか?
よろしくお願いします。