我必须做类似的事情:
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>
};
然后我的项目说“ 无效的表达:意外的标记:如果” 我该怎么做呢?
答案 0 :(得分:2)
XQuery在语法上不认为多个连续的标签正确,XML片段必须具有一个根标签才有效。
但是,它允许您使用语法为(item1, item2, ... itemN)
的序列类型,可以使FLWOR表达式的return
子句产生多个XML标签:
for $var in $myValueOfVar
return
if ($var= "X") then
(
<tagA>A</tagA>,
<tagB>B</tagB>,
<tagC>C</tagC>
)
else
<tagD>D</tagD>