2017-06-21 156 views
0

我正在與eXist開始一個新項目。我們將存儲幾百個代表手稿的TEI XML文檔。我們想要捕捉的一些東西是重複的,主要是人和地方。我的同事已經向TEI社區詢問了表示我們想要捕獲的策略,並且已經建議使用XInclude作爲減少重複的一種方式。exists-db:XQuery和包含XInclude的文檔

我已經快速地將XInclude添加到文檔中,並且序列化的XML確實呈現包含XML文件。但是,XQuery中缺少包含的文本。我注意到在eXist中的文檔(http://exist-db.org/exist/apps/doc/xinclude.xml)認爲:

存在,但在分貝系列化的時間,這意味着 查詢引擎將看到的XInclude標籤會被擴展之前擴展XIncludes。因此,您無法跨XIncludes查詢 - 除非您爲其創建自己的 代碼(例如XQuery函數)。儘管如此,我們當然希望 支持對xincluded內容的查詢。

查詢使用XInclude的文件的最佳做法是什麼?

我不知道我是否應該有一個「工作」序列化源TEI XML文件擴展XIncludes並將這些文件存儲在單獨的收藏?在這種情況下,file:serialize是這個任務的正確函數嗎?

我們在項目的開始,所以任何建議表示讚賞。

回答

0

你能描述你試過什麼樣的查詢was missing the text

一般來說,由於通過XInclude的引用文件是格式良好的XML文檔,可以使用集合(文件夾)來組織你的查詢中存在-DB。因此,代替​​,您可以for $search in collection('/app/mydata')/*

更詳細的答案將遵循源文檔中未展開的xinclude語句的屬性,並找到目標中的匹配元素,但難以在沒有具體MWE的情況下進行抽象。

你試圖創建一個讓條款的臨時和擴展片段,並認爲不是存儲的XML查詢? 當心命名空間!

希望這會有所幫助,並向Sebastiaan致以問候。

+0

對不起,這個答覆很慢,而不是在原始問題中加一個例子。說實話,這是一個帶有一些項目信息的簡單單一文件,我將部分信息分割成單獨的文件來測試XInclude支持。它並不真正反映項目的組織結構,我需要根據您的答案來思考更多。我也會看看你的關於let子句的建議。 我會除了你的答案,因爲我的問題的答案 - 「查詢使用XInclude的文件的最佳做法是什麼?」 - 似乎是,「這取決於...」:) – MikeJ

+1

一旦你有MWE,隨時修改你的問題。我有45萬tei/xml片段通過XInclude連接存在。所以答案的默認部分是:無論如何,只需幾行xQuery代碼即可。 – duncdrum