Xml Xquery:嵌套ifs

Xml Xquery:嵌套ifs,xml,xquery,Xml,Xquery,基本上我有几个序列可能是空的,如果它们是空的,那么我不想输出它的父节点。如果所有序列都是空的,那么我不希望包含节点。基本上,我的代码与此类似,但不起作用: let $a := //a let $b := //b return <root> {if (exists($a) or exists($b)) then <div id="container"> {if (exists($a)) then <h2&g

基本上我有几个序列可能是空的,如果它们是空的,那么我不想输出它的父节点。如果所有序列都是空的,那么我不希望包含节点。基本上,我的代码与此类似,但不起作用:

let $a := //a
let $b := //b

return
<root>
   {if (exists($a) or exists($b)) then
      <div id="container">
         {if (exists($a)) then
            <h2>As</h2>
            <div>
               {for loop for $a sequence...}
            </div>
          else()
          }
          {if (exists($b)) then
            <h2>Bs</h2>
            <div>
               {for loop for $b sequence...}
            </div>
          else()
          }
      </div>
    else()
    }
</root>
let$a:=//a
让$b:=//b
返回
{如果(存在($a)或存在($b)),则
{如果(存在($a)),则
作为
{for$a序列的循环…}
else()
}
{如果(存在($b)),则
学士学位
{for$b序列的循环…}
else()
}
else()
}

您的查询中有一个简单的语法错误:

if (exists($a))
then
  <h2>As</h2>
  <div>
     {for loop for $a sequence...}
  </div>
else
  ()

查询中有一个简单的语法错误:

if (exists($a))
then
  <h2>As</h2>
  <div>
     {for loop for $a sequence...}
  </div>
else
  ()

非常感谢您的解决方案。你的谓词技巧确实非常巧妙,谢谢分享。尽管在eXist DB 1.4中,非空序列本身不会返回true。您必须对其调用exists()。非常感谢您提供的解决方案。你的谓词技巧确实非常巧妙,谢谢分享。尽管在eXist DB 1.4中,非空序列本身不会返回true。您必须对其调用exists()。
let $a := //a
let $b := //b
return
<root>
{
  <div id="container">
  {
    (<h2>As</h2>, 
     <div>
     {
       ...
     }
     </div>)[$a],

    (<h2>Bs</h2>,
     <div>
     {
       ...
     }</div>)[$b])
  }
  </div>[$a or $b]
}
</root>