2016-04-28 33 views
0

我想在XQUERY中加入文檔和序列。 我'嘗試這種代碼:在XQUERY中加入序列和文檔

let $in_xml := 
<ss> 
    <s> 
    <p>2016/2/18/11/protocol13818.xml</p> 
    <n>service1_1</n> 
    <d>2016-04-01</d> 
    </s> 
    <s> 
    <p>2016/2/18/15/protocol13819.xml</p> 
    <n>service_2</n> 
    <d>2016-04-02</d> 
    </s>  
</ss> 

for $a in /version, 
    $i in $in_xml 
where $a/fn:base-uri() = $i/s/p 

return <a>{$a//id/value/text()," ", $i//n}</a> 

,並具有這樣的結果:

<a>c2e9bb01-acc1-4a64-b39b-f30ef514c5ec <n>service1_1</n> 
    <n>service_2</n> 
</a> 
<a>50543b71-48b8-41f6-956e-b444c5ad0abe <n>service1_1</n> 
    <n>service_2</n> 
</a> 

爲什麼順序不被過濾? 我想,那結果會是這樣的:

<a>c2e9bb01-acc1-4a64-b39b-f30ef514c5ec <n>service1_1</n> 
</a> 
<a>50543b71-48b8-41f6-956e-b444c5ad0abe <n>service1_2</n> 
</a> 

我怎樣才能做到這一點?有任何想法嗎?謝謝!

回答

1

當你做$i in $in_xml時,你遍歷了$in_xml中的每個元素,$in_xml本身就是$in_xml,因爲它是一個元素而不是一個序列。遍歷的$in_xml所有的孩子,你需要選擇其中:

你想要的東西像

for $a in /version, 
    $i in $in_xml/s 
where $a/fn:base-uri() = $i/p 

return <a>{$a//id/value/text()," ", $i/n}</a> 
+0

謝謝!有用! – DanStopka

+0

可能你知道如何包裝結果? DanStopka

+1

你周圍的一切用' {}',就像你用''周圍的文本。它可以任意嵌套 – BeniBela