xpath 在同级集合中导航文档

标签 xpath xquery

我在变量 $data 中收集了 1000 份 TEI 文档(注意:每个文档中最顶层的节点是 tei:TEI )。

在 Xpath 中(在 Xquery 下)我可以输出所有的 @type="example"文件:

let $coll := $data/tei:TEI[@type="example"]
return $coll

然后,我可以从上述结果中进一步提取一个文档:
let $coll := $data/tei:TEI[@type="example"]
return $coll[@xml:id="TC0005"]

以上工作正常。

现在,我想获取某个文档之前和之后的文档,我认为可以使用 preceding-sibling 来完成。/following-sibling :
let $coll := $data/tei:TEI[@type="example"]
return ($coll[@xml:id="TC0005"]/preceding-sibling[1],
       $coll[@xml:id="TC0005"],
       $coll[@xml:id="TC0005"]/following-sibling[1])

然而,上面只返回 $coll[@xml:id="TC0005"] 的文档。 .

此语法对于在集合中导航文档到文档是否正确?

非常感谢。

最佳答案

在文档节点的集合或序列中,您没有任何 sibling , sibling 仅存在于每个文档树中,因此我认为您只需要以下形式的位置访问

let $examples := $data/tei:TEI[@type="example"]
for $example at $pos in $examples
where $example/@xml:id = 'TC0005'
return (
  $examples[$pos - 1],
  $example
  $examples[$pos + 1]
)

这是基于我对 XQuery 和 XPath 序列的理解,我希望它也适用于您在 XQuery 数据库中的集合。

关于xpath 在同级集合中导航文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57537549/

相关文章:

css - 使用 xpath 或 css 选择器解析混合移动应用程序中的所有元素

sql-server - XPath 查询在在线 XPath 测试器中运行良好,但在 SQL Server 中却不行

python - 无法使用我的 scraper 中定义的 xpath 获取项目

java - 使用 Commons Digester 解析成 HashMap

XQuery:导入的变量是否延迟计算?

python - 使用 Following-Sibling PYTHON 单击表内的按钮

html - 如何使用XPath 1.0在同一行的节点中获取所有文本

xml - 如何获取单个 XML 元素的所有 namespace 声明

Xquery 版本 0.9-ml 到 xquery 版本 1.0-ml 更新

sql-server-2008 - XQuery 如果存在条件插入/替换