首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想要动态创建XML元素

我想要动态创建XML元素
EN

Stack Overflow用户
提问于 2012-04-27 13:55:18
回答 2查看 3.4K关注 0票数 0

我想在运行中创建一个元素,我正在尝试下面的查询,但它给了我这个错误:SQL16031N XQuery language feature using syntax "element {$first} { "Crockett" }, element last {"Johnson" } } })" is not supported

你能帮帮我吗?

代码语言:javascript
运行
复制
    XQUERY
let $first := concat('first','')
return (element book { 
    attribute isbn {"isbn-0060229357" }, 
    element title { "Harold and the Purple Crayon"},
    element author { 
        element {$first} { "Crockett" }, 
        element last {"Johnson" }
    }
})
EN

回答 2

Stack Overflow用户

发布于 2012-04-27 19:08:51

试试这个:

代码语言:javascript
运行
复制
let $first := xs:QName('first')
return (element book { 
    attribute isbn {"isbn-0060229357" }, 
    element title { "Harold and the Purple Crayon"},
    element author { 
        element {$first} { "Crockett" }, 
        element last {"Johnson" }
    }
})
票数 0
EN

Stack Overflow用户

发布于 2012-04-28 20:15:51

DB2 XQuery似乎不支持具有动态计算名称的computed element constructors。如果可能的名称数量很少且事先已知,则可以通过列出所有可能的名称来绕过这一限制。由于DB2似乎也不支持switch,我们将不得不使用if/else级联来实现:

代码语言:javascript
运行
复制
XQUERY
let $first := 'firstA'
return (element book { 
    attribute isbn {"isbn-0060229357" }, 
    element title { "Harold and the Purple Crayon"},
    element author { 
        if($first eq 'firstA')
          then element firstA { "Crockett" }
        else if($first eq 'firstB')
          then element firstB { "Crockett" }
        else if($first eq 'firstC')
          then element firstC { "Crockett" }
        else (), 
        element last {"Johnson" }
    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10345467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档