xquery初学者-当xml中没有变量的内容时,如何为该变量指定特定的默认值

xquery初学者-当xml中没有变量的内容时,如何为该变量指定特定的默认值,xquery,Xquery,我正在努力从网页中提取一些内容 下面是我正在使用的XQuery代码。我使用一个XQuery库来解析XML,XML是通过将HTML网页转换为XML获得的。之后,我将从该XML页面提取一些特定内容: declare variable $doc as node() external; let $select_block := $doc//div[@class="randomclass" and contains(.,'MatchingText')] for $select_link in $sele

我正在努力从网页中提取一些内容

下面是我正在使用的XQuery代码。我使用一个XQuery库来解析XML,XML是通过将HTML网页转换为XML获得的。之后,我将从该XML页面提取一些特定内容:

declare variable $doc as node() external;

let $select_block := $doc//div[@class="randomclass" and contains(.,'MatchingText')]
for $select_link in $select_block/a 
for $select_link_url in $select_link/@href
where contains($assignee_link_url, 'inassignee')  
return data($select_link)
从上面,您可以看到变量
$select\u block
试图提取网页中具有
class=“randomclass”
且包含文本“MatchingText”的div的内容


现在,如果所讨论的网页不包含这样的块,那么如何返回
$select\u link
的默认值?基本上,我想解决这样一种情况:XQuery表达式中的选择没有返回值,这样我就可以标记一个标志,告诉用户没有找到该值。

if/then/else构造可能会执行您想要的操作。例如:

declare variable $doc as node() external;

let $select_block := $doc//div[@class="randomclass" and contains(.,'MatchingText')]
return if($select_block) then (
  for $select_link in $select_block/a 
  for $select_link_url in $select_link/@href
    where  contains($assignee_link_url,'inassignee')  
  return data($select_link)
) else (
  'default value'
)

--上面的xquery正确吗?我可以在“如果”之前看到一个“返回”(我认为不应该在那里…)。。。“默认值”之前不应该有另一个返回吗?谢谢…@ChristianGrün-如果我想给出3个不同的输出——一个检查“选择块”的存在,一个检查“选择链接”的存在,第三个像往常一样给出输出。。。我如何创建if。。然后…否则如果。。。其他的Xquery中允许这样的构造吗?您能否为上面的示例提供这样一个构造(有3个场景)?非常感谢…@ChristianGrün我找到了一些嵌套if-then-else的例子。。谢谢你的帮助…很高兴听到你解决了这个问题。最后一点注意:由于XQuery的功能性质,所有表达式(包括if/then/else)几乎都可以放在查询中的任何位置。。