我正在用eXist开始一个新的项目。我们将存储数百个代表手稿的TEI XML文档。我们想要捕捉的很多东西都是排斥的,主要是人和地方。我的同事向TEI社区询问了我们想要捕获什么的策略,并建议使用XInclude作为减少重复的一种方法。
我在文档中添加了一个XInclude,并且序列化的XML确实呈现了包含XML文件。但是,XQuery中缺少包含的文本。我在eXist docs (http://exist-db.org/exist/apps/doc/xinclude.xml)中注意到:
eXist-db在序列化时扩展XIncludes,这意味着查询引擎将在展开XInclude标记之前看到它们。因此,您不能跨XIncludes进行查询--除非为它创建自己的代码(例如,XQuery函数)。不过,今后我们肯定会支持对xincluded内容的查询。
查询使用XInclude的文件的最佳实践是什么?
我想知道是否应该有一个序列化源TEI文件的“作业”来展开XIncludes并将这些文件存储在一个单独的集合中?在这种情况下,文件:序列化是否是此任务的正确函数?
我们正处于项目的开始阶段,所以任何建议都很感激。
发布于 2017-06-22 11:50:35
您能描述一下您尝试过什么样的was missing the text查询吗?
通常,由于通过XInclude引用的文件是格式良好的xml文档,所以可以使用集合(文件夹)在exist-db中组织查询。所以你可以用for $search in doc("mydoc.xml")代替for $search in collection('/app/mydata')/*
更详细的答案将跟随源文档中未展开的xinclude语句的属性,并在目标中找到匹配的元素,但如果没有具体的MWE,很难将其抽象出来。
您是否尝试过在let子句中创建一个临时的扩展片段,并查询它而不是存储的xml?小心名称空间!
希望这能有所帮助,并向Sebastiaan问好。
https://stackoverflow.com/questions/44681545
复制相似问题