2012-08-06 39 views
0

我正在努力從網頁中提取一些內容。xquery beginner-如何在xml中沒有該變量的內容時給變量賦予特定的默認值

下面給出了我正在使用的XQuery代碼。我正在使用XQuery庫來解析通過將HTML網頁轉換爲XML而獲得的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_block嘗試提取網頁具有class="randomclass"的該分區的內容,幷包含文本「MatchingText 」。

現在,如果有問題的網頁不包含這樣的塊,那麼我如何返回默認值$select_link?基本上,我想要解決在XQuery表達式中沒有返回值作爲選擇的情況,這樣我就可以標記一個標誌,告訴用戶該值未找到。

回答

0

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' 
) 
+1

- 上面的xquery是否正確?我可以在'if'之前看到一個'return'(我認爲它不應該在那裏...)...另外不應該有'默認值'之前的另一個返回?謝謝... – Arvind 2012-08-06 10:19:37

+0

@ChristianGrün - 如果我想給出3個不同的輸出 - 一個檢查是否存在「select_block」,一個用於檢查「select_link」的存在和第三個用於輸出像往常一樣...怎麼做我創建了一個if .. then..else if ... else? Xquery允許這樣的構造嗎?你能否爲上面的例子提供這樣的結構(有3個場景)?非常感謝... – user1578871 2012-08-06 10:23:45

+0

@ChristianGrün我發現了嵌套if-then-else的一些例子..謝謝你的幫助... – user1578871 2012-08-06 13:15:33