xquery - 为什么第一个 xquery 语句有效但第二个不行

标签 xquery

我是 xquery 新手。为什么第一个 xquery 语句有效,而第二个则无效?第一个在第二层有多个 xml 元素,第一个在顶层有多个。

let $payload := <root><foo>bar</foo></root>

return
<root>
{
    if (exists($payload/foo)) then
        <prop>
        <key>mykey</key>
        <value>bar</value>
        </prop>
    else
        ""
}
</root>

这不是

let $payload := <root><foo>bar</foo></root>

return
<root>
{
    if (exists($payload/foo)) then
        <key>mykey</key>
        <value>bar</value>
    else
        ""
}
</root>

最佳答案

您需要将元素括在括号中并用逗号分隔元素,因为没有封闭的根元素:

    if (exists($payload/foo)) then (
        <key>mykey</key>,
        <value>bar</value>
    ) else (
      ""
    )

关于xquery - 为什么第一个 xquery 语句有效但第二个不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67503992/

相关文章:

XQuery:导入的变量是否延迟计算?

xml - xQuery更新问题

xml - 为什么 XSD 规范接受具有 -14H 的时区?

xpath - Xquery 嵌套映射 :merge from xml produces error "expected single value for key, got 0"

xquery - 如何在 xquery 中导入通用模块命名空间

rest - 从 MarkLogic 8 中的 rest 端点调用具有依赖关系的 xquery 库

xml - 将变量从 bash 传递到 XQuery

xml - 如何在新属性中复制属性值

c++ - 使用 QXmlItem 作为 QXmlQuery 焦点提取子节点值

sql - XQuery 存在检查选择 sql 查询