xquery-如何放置';范围';某些节点上的条件';上一个和下一个同级节点

xquery-如何放置';范围';某些节点上的条件';上一个和下一个同级节点,xquery,Xquery,请看下面的样品-- 现在,我只知道2个“b”标记中的文本——(在我们的示例中是“Name#1”和“Name#2”)——因此我想我必须以某种方式设置条件并检索链接(我需要),对这些链接的前一个同级和后一个同级设置条件——设置这些条件的命令是什么(如果到目前为止我是对的)?如果我不是对的,那么我该如何获得这组链接?这是有效的: $doc/div[ @class="patent_bibdata"]/b[. = ' First list']/following-sibling::a[not(preced

请看下面的样品--

现在,我只知道2个“b”标记中的文本——(在我们的示例中是“Name#1”和“Name#2”)——因此我想我必须以某种方式设置条件并检索链接(我需要),对这些链接的前一个同级和后一个同级设置条件——设置这些条件的命令是什么(如果到目前为止我是对的)?如果我不是对的,那么我该如何获得这组链接?

这是有效的:

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

考虑到您今天提出的关于XQuery的大量基本问题,最好先对XQuery有一个基本的了解。有一些非常好的书,我特别喜欢Priscilla Walmsley的那本。

@dirkk--following sibling::上下文节点的所有兄弟节点都遵循它….前面的sibling::上下文节点前面的所有同级…那么在您上面给出的代码中,“First List”的以下同级不是与“Second List”的前面同级相同吗?我在这里有点困惑…如果我正确理解了您的问题,您希望提取两个a标记
。因此您查找所有a-n第一个b节点之后的ODE,没有第二个b节点作为前面的同级节点(在XQuery中,[]是谓词语法)。此外,即使您不能立即理解代码,请至少尝试自己运行它,并尝试了解它的功能。在这种情况下,只需删除一些谓词并查看输出即可轻松完成。
....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'
$doc/div[ @class="patent_bibdata"]/b[. = ' First list']/following-sibling::a[not(preceding-sibling::b[. = ' Second list'])]