由於父母和孩子的屬性值:的XPath來連接在一個查詢
<?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
只有找一個普通的Xpath 1.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"])
- 給出錯誤(認爲的毗連適用於單行結果)
string-join(/root/report/@Id | /root/report/property[@name="test"] , ',')
- 所有內容都是單行,即使是兩個報告ID。
這是正是我需要的!但是,不幸的是在XPath 1.0中不可用! – 2013-03-25 21:49:01
我認爲XPath 1中不可能這樣做,因爲您只能選擇每個節點一次,並且只能在最後使用值。除非對大小有嚴格的限制(例如只有兩個報表節點)(你的第二個例子是XPath 2,而不是1,不是嗎?) – BeniBela 2013-03-26 00:34:29
是的,它是XPath 2.我嘗試了所有不同的選項,但沒有檢查在實際系統中。隨着您的解決方案意識到我有使用XPath 1.0的限制。 – 2013-03-26 05:30:25