2012-09-04 25 views
0

我想從XHTML文檔中提取內容 - 在本文檔中,在div內,有一些「b」元素,每個後面都有一個鏈接。xquery-如何獲取節點的內容緊接在已知文本的節點之後

對於eg--

<div id="main"> 
    <b> Bold text 1</b> 
    <a href="http://link.com/"> some link 1</a> 
     <b> Bold text 2</b> 
    <a href="http://link.com/"> some link 2</a>  
    <b> ABRACADABRA</b> 
    <a href="http://link.com/"> abracadbralink</a> 
</div> 

現在,我想提取鏈接「abracadabralink」 - 問題是,我不知道有多少和元素在不同的這種特定的鏈接 - 之前在那裏文檔中存在不同數量的這種元素 - 有時在單個元素之後立即有很多鏈接 - 我所知道的是,在我想要的鏈接之前發生的元素文本始終是固定的。

所以唯一固定的信息是我想要鏈接後立即具有已知文本的元素 - 如何使用XQuery獲得此鏈接?

回答

0

如果我理解正確,那麼您對@href屬性的值感興趣嗎?這可以用標準的XPath語法來完成:

doc('yourdoc.xml')//*[. = ' abracadbralink']/@href/string() 

有關XPath的更多信息,我建議你看看一些在線教程,如http://www.w3schools.com/xpath/default.asp

+0

我只知道文本「胡言亂語」,在出現只是我want--一遍,「abracadabralink」鏈接之前只有indicative--如鏈路可以是 xyzlink - 只有文本「胡言亂語」出現在鏈接之前,包含在'b'元素中我知道... – Arvind

0

我猜應該以下爲你工作:

$yournode/b[. = ' ABRACADABRA']/following-sibling::a/@href/string()