如果xquery中存在数据,则创建标记

时间:2018-01-04 09:23:02

标签: xslt xquery

我是Xquery的新手。我试图实现以下场景(xslt),它将根据条件创建一个标签。

<xsl:if test="x = 0">
<Tag>Sample</Tag>
</xsl:if>

如何在Xquery中实现相同的目标?

- 编辑在下面 -

尝试使用以下代码得到输出,如图所示。可能出了什么问题?

<Root>   
<Name>sampleName</Name>    
     let $xyz := 10
   if ($xyz  > 1)
   then
   return <ns1:Primary_Acct_Num>11222</ns1:Primary_Acct_Num>
</Root>

输出(与上述输入相同)

<Root>   
<Name>sampleName</Name>    
     let $xyz := 10
   if ($xyz  > 1)
   then
   return <ns1:Primary_Acct_Num>11222</ns1:Primary_Acct_Num>
</Root>

1 个答案:

答案 0 :(得分:3)

您可以使用

if (x = 0) then <Tag>Sample</Tag> else ()

至于在直接元素构造函数中使用表达式,你需要将它括在花括号https://www.w3.org/TR/xquery-31/#dt-enclosed-expression中,如

<Root>   
<Name>sampleName</Name>
{
   let $xyz := 10
   return
       if ($xyz  > 1)
       then <Primary_Acct_Num>11222</Primary_Acct_Num>
       else ()
}
</Root>

http://xqueryfiddle.liberty-development.net/bFukv88

另一种方法是创建元素,但在谓词中添加条件,例如

<Root>   
<Name>sampleName</Name>
{
   let $xyz := 10
   return <Primary_Acct_Num>11222</Primary_Acct_Num>[$xyz > 100]
}
</Root>

http://xqueryfiddle.liberty-development.net/bFukv88/1