0

私はウェブページからいくつかのコンテンツを抽出するために働いています。

以下に、私が使用しているXQueryコードを示します。XQueryライブラリを使用して、HTMLWebページを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)

上記から、変数が、を持ち、テキスト「MatchingText」を含む$select_blockWebページのそのdivのコンテンツを抽出しようとしていることがわかります。class="randomclass"

問題のWebページにそのようなブロックが含まれていない場合、デフォルト値を返すにはどうすればよい$select_linkですか?基本的に、XQuery式内の選択に対して値が返されないシナリオに取り組み、この値が見つからなかったことをユーザーに通知するフラグをマークできるようにします。

4

1 に答える 1

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'
)
于 2012-08-06T10:10:34.270 に答える