xquery-如何获取紧接在具有已知文本的节点之后的节点的内容

时间:2012-09-04 12:57:00

标签: xquery

我正在尝试从XHTML文档中提取内容 - 在本文档中,在div中,有许多“b”元素,每个元素后跟一个链接。

例如 -

<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获取此链接?

2 个答案:

答案 0 :(得分:0)

如果我做对了,你对@href属性的价值感兴趣吗?这可以使用标准XPath语法完成:

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

有关XPath的更多信息,我建议您查看一些在线教程,例如http://www.w3schools.com/xpath/default.asp

答案 1 :(得分:0)

我想以下内容适合您:

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