exists-db:XQuery和带有XInclude的文档

时间:2017-06-21 16:28:06

标签: exist-db tei

我正在与eXist开展一个新项目。我们将存储几百个代表手稿的TEI XML文档。我们想捕捉的很多东西都是重复的,主要是人和地方。我的同事向TEI社区询问了代表我们想要捕获的内容的策略,并建议使用XInclude作为减少重复的方法。

我已经快速地将XInclude添加到文档中,并且序列化的XML确实呈现了包含XML文件。但是,XQuery中缺少包含的文本。我在eXist文档(http://exist-db.org/exist/apps/doc/xinclude.xml)中注意到:

  

eXist-db在序列化时扩展XIncludes,这意味着   查询引擎在展开之前会看到XInclude标记。您   因此无法跨XIncludes进行查询 - 除非您创建自己的   代码(例如XQuery函数)。我们当然希望   不过,支持将来对xincluded内容的查询。

查询使用XInclude的文件的最佳做法是什么?

我想知道我是否应该找一份工作'序列化源TEI XML文件以扩展XIncludes并将这些文件存储在单独的集合中?在这种情况下,file:serialize是否是此任务的正确函数?

我们正处于项目的开始阶段,所以任何建议都值得赞赏。

1 个答案:

答案 0 :(得分:0)

您能描述一下您尝试was missing the text的查询类型吗?

通常,由于通过XInclude引用的文件是格式良好的xml文档,因此您可以使用集合(文件夹)在exists-db中组织查询。因此,您可以for $search in doc("mydoc.xml")

而不是for $search in collection('/app/mydata')/*

更精细的答案将遵循源文档中未展开的xinclude语句的属性,并在目标中找到匹配的元素,但如果没有具体的MWE,很难将其抽象出来。

您是否尝试在let子句中创建临时和扩展的片段,并查询而不是存储的xml? 小心命名空间!

希望这有帮助,并向Sebastiaan致以问候。