【发布时间】:2018-10-29 13:11:40
【问题描述】:
我必须这样做:
declare function xf:NameOfXQ($myIn as element(ns2:myIn))
as element() {
<ns0:tagIn>
<myObj>
{
for $var in $myValueOfVar
return
if ($var= "X") then
<tagA>A</tagA>
<tagB>B</tagB>
<tagC>C</tagC>
else
<tagD>D</tagD>
}
</myObj>
</ns0:tagIn>
};
但是当构建 xquery 时,我的项目说“无效的表达式,期待 ELSE,找到 '>'” 然后我尝试使用 4 个 IF,一个来填充每个标签,例如:
declare function xf:NameOfXQ($myIn as element(ns2:myIn))
as element() {
<ns0:tagIn>
<myObj>
{
for $var in $myValueOfVar
return
if ($var= "X") then
<tagA>A</tagA>
else
()
if ($var= "X") then
<tagB>B</tagB>
else
()
if ($var= "X") then
<tagC>C</tagC>
else
()
if ($var != "X") then
<tagD>D</tagD>
else
()
}
</myObj>
</ns0:tagIn>
};
然后我的项目说“无效表达式:意外令牌:if” 我怎样才能正确地做到这一点?
【问题讨论】:
-
一个 XML 片段必须有一个根标记才能被认为是有效的,这就是 XQuery 无法编译的原因。您也许可以改用一系列 XML 片段,例如
(<tagA>A</tagA>, <tagB/>, ...) -
你的意思是一个父亲标签,比如
?因为如果是这样的东西,我有,我只是忘了输入问题代码。如果是其他事情,你能解释一下吗?感谢您的帮助。... -
是的父标签,但您的 FLWOR 表达式本身应该返回一个有效的 XML 片段。我正在为序列使用编写一个示例,我已经好几年没有编写 XQuery 了,所以我宁愿测试它。如果我成功了,我会发表评论。
-
好的,返回一系列 XML 片段而不是单个 XML 片段有效;请参阅xpathtester.com/xquery/219e8413be6a63eefe68da2b5097cab5 获取示例
-
简而言之,只需在多个 XML 标记周围添加括号并用逗号分隔它们
标签: xquery