2014-09-13 60 views
-1

下面是XML結構。XQuery- concat或字符串連接?

<Docs> 
<Doc> 
    <Title>Physics</Title> 
    <Desc> 
    <Part n="Part 1"> 
     <Chap c="1"/> 
     <Chap c="2"/> 
     <Chap c="4"/> 
    </Part> 
    </Desc> 
</Doc> 
<Doc> 
    <Title>Physics</Title> 
    <Desc> 
    <Part n="Part 2"> 
     <Chap c="2"/> 
     <Chap c="3"/> 
     <Chap c="4"/> 
    </Part> 
    </Desc> 
</Doc> 
</Docs> 

的輸出,我以後如下 -

<Title>Physics,#,Part 1 - 1,2,4</Title> 
<Title>Physics,#,Part 2 - 2,3,4</Title> 

我試着用不同的組合使用concatstring-join但一切都是徒勞:(

+2

您的XML文檔不正確。你能先解決它嗎? – 2014-09-13 08:16:38

+1

「我嘗試過各種組合」 - 請顯示您嘗試過的方式,以便我們可以幫助您解決具體問題。 – 2014-09-13 09:08:55

回答

0

夜深了,我打了它又一次得到了答案,雖然不是我所要求的確切答案,但足以滿足我的需求 -

let $a := 
<Docs> 
<Doc> 
    <Title>Physics</Title> 
    <Desc> 
    <Part n="Part 1"> 
     <Chap c="1"/> 
     <Chap c="2"/> 
     <Chap c="4"/> 
    </Part> 
    </Desc> 
</Doc> 
<Doc> 
    <Title>Physics</Title> 
    <Desc> 
    <Part n="Part 2"> 
     <Chap c="2"/> 
     <Chap c="3"/> 
     <Chap c="4"/> 
    </Part> 
    </Desc> 
</Doc> 
</Docs> 


for $x in $a//Doc 
return 
<Title>{ 
concat($x/Title,"#", 
    string-join(
     ($x/Desc/Part/@n, " - ", string-join(($x/Desc/Part/Chap/@c, ""),",")),"")) 
}</Title>