xml - XQuery:预期项目,发现序列错误

标签 xml xquery

XML:

<data>
    <providers>
        <provider num="v1">
            <name>Smith</name>
            <state>20</state>
            <city>London</city>
        </provider>
        <provider num="v2">
            <name>Jones</name>
            <state>10</state>
            <city>Paris</city>
        </provider>
        <provider num="v3">
            <name>Adams</name>
            <state>30</state>
            <city>Athens</city>
        </provider>
    </providers>
 </data>

X查询:

let $p := doc("providers.xml")/data/providers/provider
where $p/state > 15
return <cities>{concat($p/city/text(), ' , ')}</cities>

我希望输出是城市的名称,一个接一个地用逗号分隔,但我收到错误:需要项目,找到序列。

最佳答案

它正在提示 concat()函数,其中第一个参数是字符串序列。它期望您要连接的每个项目都被指定为该函数的单独参数(它不会将序列扩展到参数)。

你应该使用 string-join()相反,为每个城市生成一个逗号分隔的字符串:

<cities>{string-join($p/city/text(), ' , ')}</cities>

关于xml - XQuery:预期项目,发现序列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73416505/

相关文章:

xml - 如何在 Swift 中使用 EXSLT 或 XSL 2 处理 XMLDocument?

java - 在 Java 中使用 XQueryCompiler 仅提取值

java - 我想在java中使用XQuery For Xml处理

sql - 如何在 SQL Server 中使用 XPath、XQuery 使 XML 值以逗号分隔

sql-server - 如何使用 FOR XML 正确转换重音字符

php - 正则表达式:从部分字符串中删除换行符 (PHP)

ruby - 使用 Nokogiri 的 XML Builder 添加命名空间

XPath/XQuery : find text in a node, 但忽略特定后代元素的内容

sql-server - 在单个查询中将多个节点插入到 xml 字段

xml - XSLT 能做 CSS 能做的一切吗?