用逗号分隔同一种元素

时间:2016-11-10 19:32:00

标签: html xml formatting xquery

我有这个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 个答案:

答案 0 :(得分:1)

在XQuery中将序列序列化为字符串时,定义的行为是返回以空格分隔的列表。但是,如果要使用自定义分隔符,请使用fn:string-join()

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

从W3C规范:

  

每个封闭的表达式都转换为字符串,如下所示:

     

一个。将原子化应用于封闭表达式的值,将其转换为原子值序列。

     

湾如果雾化结果是空序列,则结果为零长度字符串。否则,雾化序列中的每个原子值都会被转换为字符串。

     

℃。上一步产生的单个字符串通过将它们与每对之间的单个空格字符连接而合并为单个字符串。