2017-06-21 3 views
0

Ich beginne ein neues Projekt mit eXist. Wir werden ein paar hundert TEI-XML-Dokumente speichern, die Manuskripte darstellen. Eine Reihe von Dingen, die wir erfassen wollen, sind Wiederholungen, hauptsächlich Menschen und Orte. Mein Kollege hat die TEI-Community nach Strategien gefragt, um darzustellen, was wir erfassen wollen, und es wurde vorgeschlagen, XInclude als eine Möglichkeit zu verwenden, um Doppelarbeit zu reduzieren.exist-db: XQuery und Dokumente mit XInclude

Ich hatte eine kurze Zeit mit dem Hinzufügen eines XInclude in ein Dokument und die serialisierte XML rendert die Include-XML-Datei. Der enthaltene Text fehlte jedoch in einer XQuery. Ich bemerke in den eXist docs (http://exist-db.org/exist/apps/doc/xinclude.xml), dass:

eXist-db XIncludes bei Serialisierung Zeit dehnt sich aus, was bedeutet, dass die Abfrage-Engine die XInclude-Tags sehen, bevor sie erweitert werden. Sie können daher nicht über XIncludes abfragen - es sei denn, Sie erstellen Ihren eigenen Code (z. B. eine XQuery-Funktion) dafür. Wir möchten sicherlich Anfragen über Xincluded Inhalt in der Zukunft unterstützen.

Was ist die beste Vorgehensweise für die Abfrage von Dateien, die XInclude verwenden?

Ich frage mich, ob ich einen 'Job' haben sollte, der die Quelle TEI XML-Dateien serialisiert, um die XIncludes zu erweitern und diese Dateien in einer separaten Sammlung zu speichern? In diesem Fall wäre Datei: Serialize die richtige Funktion für diese Aufgabe?

Wir sind am Anfang des Projekts, so dass jeder Rat geschätzt wird.

Antwort

0

Können Sie beschreiben, welche Art von Abfrage Sie versucht haben, was missing the text?

Da es sich bei den über XInclude referenzierten Dateien im Allgemeinen um wohlgeformte XML-Dokumente handelt, können Sie Ihre Abfragen in exist-db mithilfe von Sammlungen (Ordnern) organisieren. Anstatt also for $search in doc("mydoc.xml") könnten Sie for $search in collection('/app/mydata')/*

aufwändigere Antworten würden das Attribute der nicht expandiert xinclude Anweisung in Quelldokument folgen und das Anpassungselement in dem Ziel finden, aber es ist schwierig, zu abstrahieren, dass ohne konkreten MWE.

Haben Sie versucht, ein temporäres und erweitertes Fragment in einer let -Klausel zu erstellen und diese anstelle des gespeicherten XML abzufragen? Vorsicht vor Namespaces!

Hoffe das hilft, und Grüße an Sebastiaan.

+0

Sorry für die langsame Antwort und nicht für ein Beispiel in der ursprünglichen Frage. Um ehrlich zu sein, es war eine einfache Datei mit einigen Projektinformationen und ich habe einen Teil der Informationen in eine separate Datei aufgeteilt, um die XInclude-Unterstützung zu testen. Es spiegelt nicht wirklich die Organisation des Projekts wider, ich muss mehr darüber nachdenken, basierend auf Ihrer Antwort. Ich werde mir auch Ihre Vorschläge zu den let-Klauseln ansehen. Ich werde Ihre Antwort, da die Antwort auf meine Frage - "Was ist die beste Methode für die Abfrage von Dateien, die XInclude verwenden?" - scheint zu sein, "Es kommt darauf an ..." :) – MikeJ

+1

Fühlen Sie sich frei, Ihre Frage zu ändern, sobald Sie ein MWE haben. Ich habe 450 000 Tei/Xml-Fragmente, die über XInclude in exist verbunden sind. So ist der stillschweigende Teil der Antwort: Egal wie, Sie können mit nur ein paar Zeilen xQuery-Code. – duncdrum