Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API des Standardregisters »Sachbegriffe« retourniert <tei:item>s aus allen Ressourcen in data/Register #3

Open
jjarosch opened this issue May 10, 2019 · 10 comments

Comments

@jjarosch
Copy link

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 alle tei:items aus der Collection data/Register zurückgegeben, und nicht spezifisch aus der Ressource data/Register/Sachbegriffe.xml. U.a. an dieser Stelle verursacht:

collection($index-collection)

In der ediarum-indexes map läge ja aber die spezifische Ressource für das ediarum-Register »Sachbegriffe« vor.

Version 3.2.4.444

@jjarosch
Copy link
Author

Ein lokaler Fix in der oben verlinkten Zeile könnte sein:
doc($data-collection||'/'||config:get-ediarum-index-file($ediarum-index-id))

@jjarosch
Copy link
Author

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.

@jjarosch
Copy link
Author

Einzelbuchstaben ebenfalls erfolgreich getestet. Nur der master branch ist öffentlich. Auf welchen branch hättet ihr denn gern den pull request?

@jjarosch
Copy link
Author

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.

@MartinFechner
Copy link
Contributor

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?

@jjarosch
Copy link
Author

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.

@MartinFechner
Copy link
Contributor

Danke. Ich halte es für sinnvoller die Änderung weiter oben vorzunehmen:

else (
collection($index-collection)
)

ersetzen durch

else if  ($ediarum-index-id eq "items")
then (
   doc($index-collection||'/Sachbegriffe.xml')
)
else (
   collection($index-collection)
)

Gibt es damit noch Fehler?

@jjarosch
Copy link
Author

Deine Variante funktioniert (auch)! 👍

@jjarosch
Copy link
Author

Ist geplant, diese Lösung in einen Release einzuarbeiten?

@MartinFechner
Copy link
Contributor

Ja, danke für den Hinweis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants