与えられた:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<report Id="0" >
<property name="comments">comment</property>
<property name="test">sdcs</property>
<property name="test">csd</property>
<property name="eventHandlerClass">sdcs</property>
</report>
<report Id="1">
<property name="comments">comment</property>
<property name="test">dcs</property>
<property name="test">gds</property>
<property name="test">jds</property>
<property name="eventHandlerClass">sdcs</property>
</report>
</root>
期待される出力:
Id=0, test=sdcs
Id=0, test=csd
Id=1, test=dcs
Id=1, test=gds
Id=1, test=jds
これを実現するには、プレーンなXpath1.0のみを探します。varioud関数と述語を試しましたが、上記のような出力を取得できませんでした。基本的に、読んだ後、どの「テスト」がどのレポートIDに属しているかがわかるはずです。
試した:
/root/report/@Id | /root/report/property[@name="test"]
-しかし、結果は別々の行になります
/root/report/ ( @Id | property[@name="test"])
-しかし、結果は別々の行になります
concat( /root/report/@Id, /root/report/property[@name="test"])
-エラーが発生します(Concatが1行の結果で機能すると考えてください)
string-join(/root/report/@Id | /root/report/property[@name="test"] , ',')
--すべてが1行で表示され、2つのレポートIDも含まれます。