-
Notifications
You must be signed in to change notification settings - Fork 0
Software BaseX einrichten
-
GIT: Git (for Windows)
-
Tortoise GIT: https://tortoisegit.org/
-
Server: BaseX___.zip (9.1.2) oder BaseX
-
XSLT, XQuery, XPath: Saxon XSL 2.0 Processor (Saxon 9 HE (9.9.1.1))
-
Parser: ContextQL parser
-
Website files: auf Github
-
Daten aus ARCHE
-
japbib_06-2019-04-05.xml
muss heruntergeladen und daraus in BaseX mitDatabase->New...
ein neue Datenbankjapbib_06
erstellt werden
-
-
nodejs (tested with nodejs 10.x LTS)
-
Yarn (tested with Yarn 1.13.x Stable)
- BaseX auf dem Desktop oder unter Dokumente entpacken
- Aus dem Saxon Archiv saxon9he.jar kopieren nach: BaseX-Pfad\lib\custom
- Den ContextQL parser kopieren nach: BaseX-Pfad\lib\custom
- Das Datenbackup kopieren nach BaseX-Pfad\data
- "Git-Repos" kopieren (klonen) nach: BaseX-Pfad\webapp (es sollte ein Verzeichnis \japbib-web entstehen, in der index.htm etc. liegen)
- Repository mit x-query files kopieren: (vorerst nur intern, noch nicht veröffentlicht)
- in japbib-web Rechtsklick -> Tortioise Git -> Submodule Update "mass-update": \japbib-web\mass-update wird ergänzt.
- in \japbib-weg\mass-update: Rechtsklick -> Tortioise Git -> Switch/Checkout: "master"
- Benötigte JS Bibliotheken werden mit yarn verwaltet und installiert:
- node.js und yarn.js lokal installieren (installer s.o.).
- (Bei der Umstellung von bower:
bower_components
löschen.) - im Verzeichnis BaseX-Pfad\webapp\japbib-web: Rechtsklick, Git Bash Here-->
yarn install
eingeben und ausführen. Es entsteht das Verzeichnisnode-modules\bower_components
und eine Verknüpfung zu diesem Verzeichnis im root-Verzeichnis (japbib-web). - Auf Webserver kann das Verzeichnis
bower_components
einfach kopiert werden.
- Unter BaseX-Pfad \bin die Datei basexhttp(.bat) starten.
- Cache neu bauen http://localhost:8984/japbib-web/sru/refresh-scans
- Thesaurus neu cachen http://localhost:8984/japbib-web/thesaurus?x-mode=refresh
Die Website ist jetzt erreichbar unter: http://localhost:8984/japbib-web
normaler Betrieb s. [Basex_server]
Mit Katalon können Testskripte durch durchklicken von Bedienungsabläufen erstellt werden.
Präsentation hier .
Automatische Tests mit Karma sind vorgesehen.
- Alles benötigte wird mit
npm install
installiert. - Die Tests werden mit
node_modules\.bin\karma start karma.conf.js
gestartet. - Beim Speichern von Dateien werden die Tests automatisch wieder ausgeführt.
- Das Fenster mit Karma muss also offen bleiben. Dort sieht man den Status der einzelnen Tests.
- Karma öffnet einen ferngesteuerten Browser. Auch dieses Fenster muss geöffnet bleiben, kann aber verkleinert werden.
- Beim Laden der Seite wird der Thesaurusbaum einmalig vom Server geholt
- dazu wird
<Basis-URL>/thesaurus
verwendet - die Baseisdaten für den Baum sind in
thesaurus.xml
- diese Daten werden mit dem refresh Schritt von oben mit Anzahl der Vorkommen angereichert.
- diese wird mittels
thesaurus2html.xsl
in ein HTML Schnipsel umgewandelt und dieses unter dem Reiter Thesaurus eingesetzt.
- dazu wird
- Im Browser wird eine Context Query Language Suchabfrage
- eingegeben oder
- durch Nutzerinteraktion mit diversen Websitelementen generiert
- Die Abfrage wird an den Server als GET Request an die URL /sru geschickt
Dabei werden über die im Standard enthaltenen Parameter noch die folgenden Parameter mitgeschickt:
- Die möglichen standardisierten Parameter sind im SRU Standard 1.2 dokumentiert.
-
x-style=sru2ajax.xsl
: enthält ein beliebiges Stylesheet aus dem xsl-Verzeichnis des Programmcodes. Zur Zeit wird nur sru2ajax.xsl verwendet. Das "Stylesheet"none
kann angegeben werden um keine XSLT Transformation zu machen. Damit können Eingangsdaten für das Debuggen des XSLT geladen werden. -
x-no-search-filter=<bool>
: Ob der Suchfilterbaum neu generiert werden soll
- Die Suche wird von den Routinen im responses/sru Verzeichnis bearbeitet.
- Die Abfrage wird mit einem ContextQL Parser (in Java vorprogrammiert) in eine XML Form gebracht.
- Die Abfrage als XML wird in eine XQuery Abfrage umgewandelt.
- Dabei ist die Konfiguration in
maps.xml
enthalten.maps.xml
wird mittelsindex.xqm
eingebunden. - Die Abfrage wird so umgewandelt, dass der Full Text Index von BaseX verwendet wird. Das führt zu viel kürzeren Antwortzeiten.
- Dabei ist die Konfiguration in
- Die generierte XQuery wird ausgeführt und das Ergebnis in einen SRU Rahmen eingepackt.
- Es werden relevante Trefferzahlen für vorkommende Suchbegriffe dazugepackt.
- Dabei werden die gecachten Daten aus
__sru_cache_de_data__
verwendet.
- Dabei werden die gecachten Daten aus
- Das XML wird mit dem angegebenen XSLT Stylesheet umgewandelt und das XHTML Ergebnis an den Browser geliefert.
- Der Browser ersetzt alle Teile der Seite von denen neue Daten in der Antwort enthalten sind.
h4. Massenersetzungen in den Daten
- Ordner
mass-updates
-
template.xq
: eine Vorlage für das Finden von Einträgen und Ersetzen/Verbessern als Vorschau -
template-write.xq
: eine Vorlage für das Ausführen der in der Vorschau erprobten Ersetzungen/Verbesserungen -
<issue-id>-<description>.xq
: Eine konkrete Umsetzung der Vorschau -
<issue-id>-<description>-write.xq
: Eine konkrete Umsetzung eines Skripts, das in die Datenbank schreibt -
writer-to-db-in-junks.xq
: führt ein Paar Vorschau + Schreiben Skripte auf der gesamten Datenbank aus.
h3. Welches sind die entscheidenden Files?
-
maps.xml
: Ordnet Abfrageschlüsselwörter XPath-Ausdrücken zu -
__sru_cache_de_data__
: Enthält Listen von Suchbegriffen mit ihrer Häufigkeit um Zählungen zu beschleunigen. -
japbib_06
: Die MODS Daten (mit eingebetteten LIDOS Daten) -
japbib_06__hist
: Alle Änderungen durch den VLE und durch die mass-update Skripte -
japbib_06__lcks
: Sperren von einzelnen MODS Einträgen für das Bearbeiten im VLE -
japbib_06__prof
: Konfigurationsdatei für den VLE -
dict_de.xml
: Enthält Übersetzungslisten von englischen Worten und Kürzeln zu Deutschen. -
responses/http.xqm
: Liefert HTML, JS und CSS Dateien aus und sorgt für informativere Fehlermeldungen -
responses/sru.xqm
undresponses/sru/*
: Suche. -
responses/thesaurus
: Thesaurus anzeige und Funktion zum Einfügen von Zählergebnissen in den Thesaurusbaum.
diag:noAnchor: Anchor term XYZ was not found in scan using ....
Kann durch Aufruf von https://www.oeaw.ac.at/jb80/sru/refresh-scans behoben werden, der die internen Register neu generiert.
Tritt etwa auf bei: http://localhost:8984/japbib-web/sru?query=author%3DA*&version=1.2&operation=searchRetrieve&maximumRecords=10&x-style=sru2ajax.xsl
ERROR: '...japbib-web/xsl/sru2ajax.xsl: line 1: Das "method"-Attribut eines <xsl:output>-Elements hatte den Wert "xhtml". Der Wert muss "xml", "html", "text" oder qname-but-not-ncname sein' [...]
Leeres Resultat tritt etwa auf bei: http://localhost:8984/japbib-web/sru?query=author%3DA*&version=1.2&operation=searchRetrieve&maximumRecords=10&x-style=sru2ajax.xsl
<div xmlns="http://www.w3org/1999/xhtml" class="ajax-result">
<div class="search-result"/>
<div class="categoryFilter"/>
</div>
Siehe [Diagnose von XSLT-Fehlern]
Bernhard Scheid IKGA, Omar Siam, Daniel Schopper ACDH der ÖAW. CC-BY-4.0.