Einführung
8. Technische Umsetzung
Bei der Implementierung der Webanwendung für die WSRB-Edition kamen verschiedene Technologien zum Einsatz, die in diesem Abschnitt kurz vorgestellt werden.
8.1 Daten in TEI-XML
Die Edition, die Transkriptionen und die Dokumentation wurden im Format TEI-XML1 codiert. Eine Beschreibung der verwendeten TEI-Elemente findet sich im Abschnitt 6.3 Beschreibung der TEI-Syntax der Editionsrichtlinien.
Verschiedene mittels TEI-ROMA erstellte RelaxNG-Schemata stellen sicher, dass in allen Dateien (Edition, Transkriptionen und Dokumentation) valides XML gespeichert ist. Die Schemata sind Bestandteil der Datenpublikation.
8.2 Software-Bibliotheken und -Frameworks
Für die Implementierung der Webanwendung wurden folgende Software-Bibliotheken und Tools eingesetzt:
- Java 17 als Programmiersprache,
- Spring Boot 3.5 als Webframework,
- Thymeleaf 3.1 als HTML-Template-Engine,
- Saxon 12 für die XSLT3-Verarbeitung,
- Java Streaming-API for XML (StAX) für weitere XML-Verarbeitungsschritte,
- Apache Solr 9.10 für die Suche,
- Bootstrap 5.3 als CSS-Toolkit für das Weblayout und
- PrismJS 1.3.0 als CSS-Toolkit für Darstellung von XML-Code.
Auf einige der in dieser Liste genannten, Tools und Bibliotheken wird in den folgenden Abschnitten noch einmal im Detail eingegangen.
8.3 XSLT-Transformation für die Webdarstellung
Die HTML-Darstellung der Texte wird durch XSLT-Stylesheets2 definiert. Sie übersetzen die TEI-XML-Daten in HTML-Code für die Anzeige auf der Webseite. Für die Transformation wurde die Java-Bibliothek Saxon 12 verwendet, die den Standard XSLT 3.0 unterstützt. Die XSLT-Dateien sind Bestandteil der Datenpublikation.
8.4 Suche und Filter
Die Such- und Filterfunktionen werden mit der Suchmaschine Apache Solr realisiert. Sie läuft als separat installierte, interne Webanwendung im Hintergrund.
Dazu wurden zunächst in einem Solr-Schema die benötigten Felder definiert. Die Editionstexte, die Apparate und die Übersetzungen wurden verschiedenen Feldern zugeordnet, um gezielt nach Wörtern in diesen Bereichen der Edition suchen zu können. Innerhalb dieser Felder wurden Normalisierungen durchgeführt, um beispielsweise die Abweichungstoleranz gegenüber der Groß- und Kleinschreibung herzustellen oder Sonderzeichen zu ersetzen. Die unterschiedlichen Kategorien der Sprüche wurden gemeinsam in ein Feld indiziert.
Für jeden Spruch der Edition wird per XSLT ein Solr-Input-Dokument, bestehend aus den zuvor beschriebenen Feldern, erzeugt. Bei jedem Neustart der Webanwendung wird eine komplette Neuindizierung durchgeführt. Dabei werden die bestehenden Informationen auf dem Solr-Server komplett gelöscht und sämtliche Input-Dokumente erneut übertragen. Dieser Vorgang dauert nur wenige Sekunden und so wird sichergestellt, dass der Inhalt des Solr-Indexes immer mit dem aktuellen Stand der Daten übereinstimmt.
Für Suchanfragen stehen die bekannten Operatoren zur Verfügung. Sie sind im Abschnitt Benutzung: 7.1.3 Suche und Filter dieser Einführung beschrieben.
Das Suchergebnis wird über die Funktionalität Facetten analysiert. Darüber wird für jede Kategorie gezählt, wieviele Sprüche in der aktuellen Trefferliste enthalten sind. Zusätzlich wird für einen Suchausdruck das unmittelbare Textumfeld (Kontext) ermittelt und angezeigt.
8.5 Weblayout
Grundlage für das Weblayout ist das CSS-Framework Bootstrap. Mit vorgefertigten Komponenten wie Buttons, Navigationsleisten, Pop-up-Dialogen und Formularen lässt sich unkompliziert ein professionelles Layout erstellen. Bootstrap unterstützt die Erstellung von Responsiven Designs. Sein Grid-System sorgt automatisch dafür, dass Webseiten auf allen Geräten gut aussehen – vom Smartphone bis zum Büromonitor. Das Bootstrap-Standard-Layout wurde an das Corporate Design für Webseiten der Universität Rostock angepasst.
Als Schriftart für die Edition und die Transkriptionen wurde Libertinus Serif3 verwendet. Libertinus ist eine Schriftenfamilie mit Serif-, Sans-Serif- und Monospace-Varianten. Sie bietet umfangreiche Unicode-Unterstützung – einschließlich mathematischer Symbole, griechischer und kyrillischer Zeichen sowie Zeichen aus historischen Drucken, die für die vorliegende WSRB-Edition essentiell sind. Damit ist sie besonders für wissenschaftliche Publikationen, technische Dokumentationen und digitale Editionen geeignet. Die Open-Source-Schrift wird kontinuierlich weiterentwickelt und zeichnet sich durch eine präzise Typografie aus.
Für die Begleittexte wurden die Schriftart Open Sans4 benutzt. Dabei handelt es sich um die Standardschriftart aus dem Corporate Design der Universität Rostock.
Zur Syntax-Hervorhebung bei der Anzeige von XML-Code wurde die JavaScript-Bibliothek PrismJS eingesetzt. Die leichtgewichtige Bibliothek ermöglicht eine einfache Formatierung von XML und anderen SourceCode-Dateien. Sie lässt sich durch Plugins erweitern, die beispielsweise Zeilennummern ergänzen oder Sprungmarken auf Zeilen setzen.
8.6 Dokumentation
Im Rahmen des Projektes wurde entschieden, den TEI-Standard auch für die Speicherung der begleitenden Texte auf der Webseite (Startseite und Einführung) zu nutzen. Vorteile dieser Lösung sind, dass die Bearbeitung mit den aus der editorischen Arbeit bekannten Werkzeugen möglich ist, die notwendigen Software-Bibliotheken für die Verarbeitung (XSLT) in der Webanwendung bereits zur Verfügung stehen und die Texte so letztendlich in einem verbreiteten, standardisierten und archivierbaren Format vorliegen.
Für die Präsentation wurde ein XSLT-Stylesheet erstellt, welches die Ausgangstexte im TEI-Format in HTML umwandelt. Zuvor wurde eine Teilmenge von TEI-Elementen und -Attributen festgelegt, die für die Codierung dieser Texte verwendet werden können.
Verwendete TEI-XML-Elemente
Für jede Webseite in der Webanwendung wurde in der TEI-XML-Datei ein Abschnitt als
<div>-Element
mit dem Attribut type="webseite" definiert. In dessen xml:id-Attribut wird ein Identifikator
angegeben, über den in der Webanwendung der Inhalt an der jeweiligen Stelle eingebettet
werden kann.
Im n-Attribut wird eine Kurzbezeichnung hinterlegt, die zur Anzeige in einem Register
oder Inhaltsverzeichnis verwendet werden kann:
<tei:div type="webseite" xml:id="intro__faktur" n="2. Faktur der Spruchsammlungen">
Für die Gliederung des Textes in Unterabschnitte wurden folgende TEI-Elemente und ihre Entsprechungen in HTML ausgewählt:
<tei:div>→<div>für Kapitel und größere Abschnitte,<tei:ab>→<div>für kleine Bereiche und<tei:p>→<p>für Absätze.
Diese TEI-Blockelemente können ein xml:id-Attribut enthalten, welches als
id-Attribut am HTML-Element umgesetzt wird. Dadurch entstehen Sprungmarken
(anchor) für gezielte Verlinkungen innerhalb der Webseite.
<tei:div xml:id="a_intro_1">→<div id="a_intro_1">
Einzelne Wörter oder Wortgruppen können mit folgenden Elementen ausgezeichnet werden:
<tei:seg>→<span>für beliebige Segmente, die dann per CSS formatiert werden,<tei:hi>→<span>für einzelne hervorgehobene Begriffe und<tei:code>→<code>für Sourcecode und Variablen
Für Abschnittsüberschriften wird das <head>-Element verwendet.
Die Hierarchieebene wird explizit im n-Attribut codiert:
<tei:head n="2">Überblick</head>→<h2>Überblick</h2>
Listen werden durch die TEI-Elemente <list>
und <item> codiert.
Im rend-Attribut wird der Listentyp ‚aufgezählt‘ (bulleted)
oder ‚nummeriert‘ (numbered) angegeben:
<tei:list rend="bulleted"> <tei:item>Punkt 1</tei:item> <tei:item>Punkt 2</tei:item> <tei:item>Punkt 3</tei:item> </tei:list> |
→ |
<ul> <li>Punkt 1</li> <li>Punkt 2</li> <li>Punkt 3</li> </ul> |
Spezielle Anforderungen an das Layout oder die Formatierung werden über CSS-Klassen
umgesetzt.
Diese stehen in den TEI-Elementen als Referenz im rendition-Attribut und werden
im HTML zu class-Attributen umgewandelt.
Als mögliche Klassennamen können beispielsweise die Bootstrap-Klassen für Texte5
genutzt werden.
Damit lassen sich bereits viele der vorkommenden Textphänomene gut und standardkonform
darstellen.
Weitere, im Rahmen dieses Projektes eingeführte, CSS-Klassen weisen im Namen das Präfix
wsrb- auf:
<tei:seg rendition="#wsrb-label">WS</tei:seg>→<span class="wsrb-label">WS</span><tei:ab rendition="#card">→<div class="card">
Fußnoten werden durch das TEI-Element <note>
mit dem Attribut place="foot" ausgedrückt.
Um die XSLT-Verarbeitung einfach zu halten, muss der Bezeichner der Fußnote
explizit im n-Attribut angegeben werden:
<tei:seg>Zeichenkodierung
<tei:note place="foot" n="7"> s.a.
<tei:ref target="...">
Wikipedia-Artikel
</tei:ref>
</tei:note>
<tei:seg>
|
→ |
<span>Zeichencodierung
<sup><a id="target_d4e227"
href="#fn_d4e227">7</a></sup>
</span>
Am Seitenende wird dann die Fußnote aufgelöst:<hr />
<sup><a id="fn_d4e227"
href="#target_d4e227">7</a></sup>
s.a. <a href="...">Wikipedia-Artikel</a>
|
Der hintere Teil des id-Attributes wird automatisiert mit der XSLT-Funktion
generate-id(.) erzeugt, die für jeden XML-Knoten eine eindeutige Nummer generiert.
Damit werden eindeutige Sprungmarken auf der Webseite erstellt.
Die vorangegangenen Erläuterungen beschreiben alle wesentlichen TEI-Elemente und ihre Transformation zu HTML. Die genauen Transformationsregeln befinden sich in der Datei html4webseite.xsl in der Datenpublikation.
| 1 | Text Encoding Initiative, https://tei-c.org/ |
| 2 | XSL Transformations (XSLT) Version 3.0, https://www.w3.org/TR/xslt-30/ |
| 3 | Libertinus Schriften-Familie, https://github.com/googlefonts/libertinus |
| 4 | Open Sans Schriften-Familie, https://github.com/googlefonts/opensans |
| 5 | Bootstrap 5.3 Dokumentation: Utilities / Text, https://getbootstrap.com/docs/5.3/utilities/text/ |