我想使用XQuery从网页的XML等价物中提取一些内容。
这里,我想使用if-then-else - 如果满足特定条件,则xquery表达式返回一个值,否则返回不同的值。
这是我对我的表达 -
我正在努力从网页中提取一些内容。
下面给出的是我正在使用的Xquery代码 - 我正在使用XQuery库来解析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_block找到了一些内容,那么应该返回数据($ select_link),否则应该返回静态文本'Missing Value'。
在上面的xquery表达式中使用if-then-else的正确方法是什么?
答案 0 :(得分:1)
如果我理解您要正确实现的目标,那么以下内容应该有效:
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'