2016-11-10 61 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