2016-11-10 60 views
0

我有這個xquery的書籍集合,它們各自有一個或多個fagfelt(主題)。當我運行我的查詢中的所有主題在表(我想這一點)的一個單元分組,但他們不能簡單地分開用逗號分隔同一種元素

一回,我得到的
let $books := (doc("oblig3.xml")/bøker/bok) 
return 
<html> 
<head> 
</head> 
<body> 
    <table border="1"> 
     <tr>Fagfelt</tr><hr/> 
     <tr><td><b>Bok Title</b></td> 
     <td><b>Forfatter</b></td> 
     <td colspan="3"><b>Fagfelt</b></td> 
    </tr> 
{ 
    for $x in $books 
    order by $x/tittle 
    return <tr> 
     <td>{data($x/tittle)}</td> 
     <td>{data($x/forfatter)}</td> 
     <td>{data($x/fagfelt)}</td> 
    </tr> 
} 
</table> 
</body> 
</html> 

例子是 -

<td>Filosofi Kunnskapsrepresentasjon Kunstig Intelligens Programmering</td> 

這是一個4個主題,不是很容易閱讀。我怎麼能分開這些,使它看起來更像

<td>Filosofi, Kunnskapsrepresentasjon, Kunstig Intelligens, Programmering</td> 

最好在同一小區內,我已經嘗試過用

{data($x/fagfelt[1...4]/text())}, 

列出它們並手動做分離,但只是留下了很多在僅有一個主題的書籍末尾處插入逗號。

回答

1

當您將序列序列化爲XQuery中的字符串時,定義的行爲是返回空格分隔的列表。但是,如果你想使用自定義的分隔符,使用fn:string-join()

fn:string-join($x/fagfelt, ', ') 

從W3C規範:

,每個密閉式如下轉換爲字符串:

一個。霧化應用於所包含表達式的值,將其轉換爲一系列原子值。

b。如果原子化的結果是空序列,則結果是零長度的字符串。否則,原子化序列中的每個原子值將被轉換爲一個字符串。

c。上一步得到的單個字符串通過將它們與每對之間的單個空格字符連接在一起而合併爲單個字符串。

+0

非常感謝,結束了使用​​{string-join((data($ x/fagfelt)),「,」)}修復它 – Peebl