Open jjarosch opened 5 years ago
Ein lokaler Fix in der oben verlinkten Zeile könnte sein:
doc($data-collection||'/'||config:get-ediarum-index-file($ediarum-index-id))
https://github.com/ediarum/ediarum.DB/compare/master...jjarosch:sachregister getestet mit einzelner Registerdatei. Vielleicht komme ich noch dazu, die Variante mit Einzeldateien für Buchstaben zu testen – dann mache ich den pull request.
Einzelbuchstaben ebenfalls erfolgreich getestet. Nur der master branch ist öffentlich. Auf welchen branch hättet ihr denn gern den pull request?
master...jjarosch:sachregister getestet mit einzelner Registerdatei. Vielleicht komme ich noch dazu, die Variante mit Einzeldateien für Buchstaben zu testen – dann mache ich den pull request.
Dieser Ansatz hat beim Kommentarregister noch das Problem, dass get-ediarum-index-file
und get-ediarum-index-collection
einen Fehler ausgeben wenn ein Index keine Ressource oder Collection definiert hat. In dieser Form ist mein Vorschlag also doch nicht verwendbar.
Die Verwendung von doc() ist teilweise problematisch, weshalb hier collections() benutzt wird. Du könntest statt der Verwendung des Standard-Sachregisters ein eigenes einrichten und etwa im Subordner Register/Sachbegriffe
speichern. Löst das Dein Problem?
Oder umgekehrt, nicht-Standard-Register nicht direkt in der Collection data/Register
anlegen. Wenn das so bleiben soll, wäre ein Hinweis in der Doku vielleicht schön. (Die generische Verwendbarkeit von ediarum.REGISTER.edit baut ja darauf, dass zusätzliche Register in der list/item-Struktur möglich sind.)
Für das konkrete Projekt bin ich noch unschlüssig, ob ich nach 2,5 Jahren nochmal Register umbauen möchte. Ich habe diese Zeile geändert in
for $item in doc(config:get-data-collection($project-name)||"/"||config:get-ediarum-index-file($ediarum-index-id))//tei:item
Das hat wieder doc()
, und umgeht komplett den Aufbau von config.xqm … funktioniert aber seit November einwandfrei.
Danke. Ich halte es für sinnvoller die Änderung weiter oben vorzunehmen: https://github.com/ediarum/ediarum.DB/blob/c62dd5448876ce36279b9fffe593559f2f52afc7/modules/config.xqm#L477-L479
ersetzen durch
else if ($ediarum-index-id eq "items")
then (
doc($index-collection||'/Sachbegriffe.xml')
)
else (
collection($index-collection)
)
Gibt es damit noch Fehler?
Deine Variante funktioniert (auch)! :+1:
Ja, danke für den Hinweis.
Wir haben ein Projekt-Register in der generischen tei:list/tei:item-Struktur angelegt und in data/Register gespeichert. Den Speicherort würde ich gerne beibehalten. Gleichzeitig ist das ediarum-Register »Sachbegriffe« aktiv.
Jetzt ist mir aufgefallen, dass die API des Registers »Sachbegriffe« auch die items des anderen Registers enthält. Wenn ich den Code richtig nachvollziehe, werden beim Aufruf der Sachbegriffe-API alles aus der Collection data/Register zurückgegeben, und nicht spezifisch aus der Ressource data/Register/Sachbegriffe.xml. U.a. an dieser Stelle verursacht:
https://github.com/ediarum/ediarum.DB/blob/067f36adb92f0d0d6b63e0e141b9276f16fe7d9b/modules/config.xqm#L486
In der ediarum-indexes map läge ja aber die spezifische Ressource für das ediarum-Register »Sachbegriffe« vor.
Version 3.2.4.444