0

请看下面的样本——

<div class="patent_bibdata">
     <b> First list</b>
     <a href="1"> Name #1</a>
     <a href="2"> Name #2</a>
     <b> Second list</b>
     <a href="1"> Name #2_1</a>
     <a href="2"> Name #2_2</a>
</div>

现在,我想提取具有文本“第一列表”的“b”元素之后的链接——但是,我不想要具有文本“第二列表”的“b”元素之后的链接——以及链接的数量在“第一名单”之后我不知道。

我想到的,是这样的——

....XQuery code defining the document as variable named "doc"
let $list:= $doc/div[ @class="patent_bibdata"]/b[. = 'First list']/following-sibling::text() -- but this should get everything after 'First list'-- including 'Second List' and 'Name #2_1' and 'Name #2_2'

现在,我只知道 2 个“b”标签中的文本(即我们示例中的“名称 #1”和“名称 #2”)——所以我认为我必须以某种方式设置条件并检索链接(我需要),对这些链接的直接前任兄弟和直接后继兄弟设置条件---放置这些条件的命令是什么(如果我到目前为止是对的)?如果我不正确,那么我该如何获取那组链接?

4

1 回答 1

0

这有效:

$doc/div[ @class="patent_bibdata"]/b[. = ' First list']/following-sibling::a[not(preceding-sibling::b[. = ' Second list'])]

考虑到您今天就 XQuery 提出的相当基本的问题,建议首先对 XQuery 有一个基本的了解。那里有一些非常好的书,我特别喜欢 Priscilla Walmsley 的那本书。

于 2012-09-04T20:11:16.683 回答