xquery初学者-如何在FLWOR语句中使用if-then-else

xquery初学者-如何在FLWOR语句中使用if-then-else,xquery,flwor,Xquery,Flwor,我想使用XQuery从网页的XML等价物中提取一些内容 这里,我想使用if-then-else——如果满足特定条件,那么xquery表达式将返回一个值,否则将返回另一个值 这是我的表达方式-- 我正在努力从网页中提取一些内容 下面是我使用的Xquery代码--我使用Xquery库解析XML,XML是通过将HTML网页转换为XML获得的…之后,我从该XML页面提取一些特定内容 declare variable $doc as node() external;

我想使用XQuery从网页的XML等价物中提取一些内容

这里,我想使用if-then-else——如果满足特定条件,那么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 $select_block/a 
                    for $select_link_url in $select_link/@href
                        where  contains($assignee_link_url,'inassignee')  
                     return data($select_link)
现在如何在这个表达式中使用if-then-else

我试图在“return”关键字之后立即添加if-then,但我得到了一个错误。。。 基本上,如果在上面的$select\u块中找到了一些内容,那么应该返回数据($select\u link),否则应该返回静态文本“Missing Value”


在上面的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($select_link_url,'inassignee') 
                return data($select_link)
    else 'Missing Value'
您可以稍微简化一些,并消除嵌套for循环,使用谓词过滤器选择锚元素:

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[@href[contains(., 'inassignee')]]
         return data($select_link)
    else 'Missing Value'