在多个返回值之间添加逗号

时间:2011-04-19 20:29:08

标签: xml xquery

我有一个看起来像这样的XML:

<Student>
    <SSN>630-44-3532</SSN>
    <Name>
        <firstName>Ali</firstName>
        <lastName>Daria</lastName>
    </Name>
            ...
    <Email>Ali@yahoo.com</Email>
    <Email>Ali@hotmail.com</Email>
</Student>

由于我们有多个节点,当我执行XQuery以获取整个电子邮件信息时,用逗号分隔,我不知道该怎么做。

这是预期的输出:

<email> Alexander@yahoo.com, Alexander@gmail.com </email>

2 个答案:

答案 0 :(得分:2)

使用

/*/Email/concat(.,
                if(not(position()=last()))
                 then ', '
                 else ()
                )

答案 1 :(得分:1)

使用XPath 2.0 / XQuery 1.0 fn:string-join()功能。

来自http://www.w3.org/2005/xpath-functions/#string-join的简要说明

  

串联接

fn:string-join($arg1 as xs:string*, $arg2 as xs:string) as xs:string
     

摘要:返回创建的xs:string   通过连接成员   使用$arg1作为$arg2序列   分隔器。如果$arg2的值是   零长度字符串,然后是   $arg1的成员被连接起来   没有分隔符。