0

我正在使用 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 是否是该任务的正确函数?

我们正处于项目的开始阶段,因此任何建议表示赞赏。

4

1 回答 1

0

你能描述一下你尝试过什么样的查询was missing the text吗?

通常,由于通过 XInclude 引用的文件是格式良好的 xml 文档,因此您可以使用集合(文件夹)来组织您在存在数据库中的查询。所以for $search in doc("mydoc.xml")你可以for $search in collection('/app/mydata')/*

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

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

希望这会有所帮助,并向塞巴斯蒂安问好。

于 2017-06-22T11:50:35.063 回答