Herausgeberleitfaden
Einleitung. Die Grundlage herunterladen
english Hier wird beschrieben, wie man selbst eine Edition zur Veröffentlichung im Netz erstellt, und zwar mit einem möglichst geringen Aufwand an Voraussetzungen und Abhängigkeiten, ohne sich irgendeiner Möglichkeit zu begeben, die das Netz bietet. Fleiß und Genauigkeit braucht es freilich. Aber diese Tugenden sind in der Editionsphilologie ja ohnehin nötig; und nebenbei kann man sich einige Kenntnisse auf digitalem Terrain aneignen. Die Darstellung baut auf den Nutzerhinweisen auf und wird von den Entwicklerhinweisen fortgeführt.
Die Grundlage für die eigene Edition oder das eigene Portal von Editionen lässt sich herunterladen. Nach dem Herunterladen und Entpacken hat man einen Ordner mit folgenden Unterordnern:
- code
- cssjs
- python
- content
- example
- goethe-schiller
- portal
- glosses.xml
- example
Der Ordner code enthält den Code zum Betrieb des Systemes. Der Ordner content enthält die Datei glosses.xml und einen Ordner example. Die Datei enthält Übersetzungen und kann von Hand ergänzt werden, um eine mehrsprachige Benutzerführung zu ermöglichen. Der Ordner steht für eine Menge von einer oder mehreren Ausgaben, die vom selben System betrieben werden. Jede Ausgabe bekäme einen Unterordner. Der Unterordner goethe-schiller steht für eine Beispielausgabe. Solch ein Unterordner wird im Folgenden Editionsordner genannt. Der Unterordner portal dagegen steht für das Portal zu allen Editionen mit einer Überblicksseite, einer übergreifenden Suche und allgemeingültigen Hinweisen.
Die Editionsordner enthalten Dateien und Ordner:
- Jede Datei ist ein Dokument, das die Syntaxregeln von XML und HTML5 erfüllt. Es entspricht einer Netzseite. Die Datei enthält aber nur den für diese Netzseite besonderen Inhalt. Teile wie das Menü oder Logos werden automatisch hinzugefügt, ebenso das nicht sichtbare Drumherum, das aus dem XML-Dokument ein HTML-Dokument macht, also eine von Browsern darstellbare Netzseite. Automatisch erzeugt werden auch, soweit möglich, verschiedene Fassungen derselben Netzseite, z. B. für verschiedensprachige Menüs. Diese automatischen Abwandlungen geschehen, indem die Datei vor dem Senden der Netzseite an den Browser in ein sogenanntes Template gefüllt wird. Die Templates liegen in einem Unterordner des Ordners python. Als Herausgeber muss man sich nicht um sie kümmern.
- Die Ordner wiederum enthalten sogenannte statische Dateien: Sie werden so, wie sie sind, an den Browser gesendet und beim Anzeigen der Netzseite verwendet. Es handelt sich vor allem um Bilddateien, die in die Netzseite eingebaut werden. Denn die im vorigen Punkt erwähnten HTML5-XML-Dokumente enthalten keine Bilder selbst, sondern nur Verweise auf Bilddateien; der Verweis steht dort, wo das Bild erscheinen soll.
Übrigens enthält der Ordner cssjs namentlich CSS-Dateien, das heißt Formatierungsanweisungen. Im vorliegenden System werden für alle Ausgaben einfachheits- und einheitlichkeitshalber dieselben CSS-Dateien verwendet. Für die Herausgebertätigkeit ist allenfalls die CSS-Datei cssjs/main.css von Belang; in der Regel kann man die gegebene Formatierung beibehalten.
Um eine neue Edition zu erstellen, ändert man die heruntergeladene Grundlage ab, insbesondere wird der Ordner goethe-schiller umbenannt, es werden in ihm Dateien geändert und vor allem neue Dateien abgelegt, die die Seiten der Edition enthalten. Wenn im Folgenden von Änderungen in Dateien die Rede ist, kann man diese Dateien einfach in einem beliebigen Texteditor öffnen und ändern. Wichtig ist, dass man in den Einstellungen dieses Editors die Zeichenkodierung auf UTF-8 stellt. UTF-8 ist der Standard in XML und im Netz, oft auch schon die Standardeinstellung in Editoren und vielerorts sonst. – Angenehm ist es, wenn der Editor ein Syntax-Highlighting für XML (oder HTML) bietet, das heißt, dass der Editor verschiedene Arten von Textbereichen in verschiedener Farbe anzeigt und zusammengehörige Klammern hervorhebt. Weiterhin angenehm ist, wenn der Editor überprüfen kann, ob das Dokument wohlgeformtes XML ist und wo gegebenenfalls ein Fehler sitzt. – Die für das Eingeben von Hand gegebenen Hinweise sind gerade auch jene, die man braucht, um schon vorhandene Daten mehr oder minder automatisch in die gewünschte Form zu konvertieren, z. B. wenn die Daten schon in einer Datenbank oder in Word-Dateien gespeichert gewesen sind.
Hat man seine Edition oder einen veröffentlichungsreifen Zwischenstand erstellt, ist die einfachste Art der Veröffentlichung, den Editionsordner in ein anderes Exemplar dieses Editionenportals zu kopieren, das auf einem Serverrechner läuft, also auf einem Rechner, der ans Netz angeschlossen und dort unter einer Anschrift erreichbar ist. Das heißt, man kann die Edition am eigenen Rechner erarbeiten, auf einen Serverrechner legen oder legen lassen, und die Edition ist dann im Netz sichtbar, nicht nur im Browser auf dem eigenen Rechner. Dazu im nächsten Abschnitt mehr.
Das Portal starten und die Beispieledition im Browser betrachten
english Man muss Python 3.4 oder höher installieren. Installationsdateien für alle gängigen Betriebssysteme kann man hier herunterladen; bei manchen Betriebssystemen empfiehlt sich auch eine Installation über die Paketverwaltung. Hat man die Installationsdatei gestartet (Doppelklick), kann man einfach so lange auf Weiter, OK oder Beenden klicken, bis die Installation fertig ist. Dann kann man das Portal starten: Im Ordner code/python/example die Datei start_on_localhost.py starten (Doppelklick) und warten, bis in dem daraufhin geöffneten Meldungsfenster als letzte Zeile steht: Hit Ctrl-C to quit.
; dann einen Browser öffnen, ins Adressfeld http://localhost:8080/goethe-schiller
eingeben und Enter drücken. Es erscheint die Startseite der Beispieledition, und die URL wird zu http://localhost:8080/de/goethe-schiller/start
geändert:
http
- heißt hypertext transfer protocol und gibt an, welchen Regeln (welchem Protokoll) der Datenaustausch zu folgen hat, nämlich denen zum Versand von Netzseiten.
localhost
- ist die Anschrift, genauer gesagt die Domain des jeweiligen eigenen Rechners.
localhost
ist der eigene Rechner selbst. Hat man die Edition auf einen Serverrechner gelegt, steht stattdessen die Domain dieses Rechners, z. B.quellen-perspectivia.net
. Auf einem solchen Serverrechner muss das Portal dann etwas anders gestartet worden sein; dazu hier. Die Herausgebertätigkeit ist von diesem Unterschied in der Domain nicht betroffen. 8080
- ist einer der Eingangskanäle (ports) des Rechners. Hat man die Edition auf einen Serverrechner gelegt, ist es meist der Port
80
, der ans Netz angeschlossen ist; und dieser Port ist impliziert, wenn die Portangabe in der URL fehlt. So sind z. B.http://quellen-perspectivia.net
undhttp://quellen-perspectivia.net:80
gleichwertig. de
- ist die Sprachangabe in der üblichen Abkürzung. Das System setzt automatisch die default-Sprache ein, wenn eine URL keine Sprachangabe oder eine Sprache angibt, die von der Edition nicht vorgesehen ist. (Wie man die vorgesehenen Sprachen festlegt, wird unten beschrieben.)
goethe-schiller
- ist der Name der Ausgabe und zugleich des Ordners, der der Ausgabe entspricht.
start
- ist der Name der Netzseite und zugleich der Datei, die der Netzseite entspricht.
Um einen ersten Eindruck vom System und seinen Seiten zu bekommen, kann man einmal die Sprache in english wechseln und auf einige Menüpunkte klicken, dabei die Änderungen in der URL betrachten.
Wenn im Folgenden die Beispieledition geändert wird, können die Änderungen gleich im Browser betrachtet werden. In der Regel genügt es, nach einer Änderung die Seite im Browser mit Druck auf die Taste F5 zu aktualisieren. Manchmal aber muss das System neu gestartet werden: Das oben erwähnte Meldungsfenster ausklicken und damit das Programm beenden, die Datei portal.py erneut starten und wie oben warten; dann F5 drücken. – Nötig ist ein Neustart, wenn man ein neues Projekt angelegt oder die Datei _config oder glosses geändert hat. (Zu diesen Änderungen unten mehr.)
Zumal wenn etwas nicht angezeigt wird wie gedacht, ist es oft hilfreich, sich das HTML-Dokument anzusehen, das der Darstellung im Browser zugrundeliegt. Das geht im Firefox etwa mit der Tastenkombination Strg u. Möglich ist auch, mit rechts auf einen fraglichen Bereich der Seite zu klicken und Element untersuchen anzuwählen: Dann erscheint der genau zu diesem Bereich gehörende HTML-Abschnitt zusammen mit den einschlägigen Formatierungsanweisungen aus den verwendeten CSS-Dateien.
Logos, Titelbild, Sprachen und Menüpunkte festlegen
english Um Sprachen, Logos, Titelbild und Menüpunkte festzulegen, ändert man im Ordner goethe-schiller die Datei _config, tauscht die Bilder im Unterordner icons aus und muss unter Umständen auch die Datei glosses im höheren Ordner portal ergänzen oder ergänzen lassen. Dazu nun im Einzelnen.
Bilder austauschen
english Im Unterordner icons sind folgende Bilder auszutauschen gegen zur eigenen Edition passende:
- cover.png
- ist das Titelbild auf der Startseite. Die Breite und Höhe sollten ganz ungefähr so sein wie jene des Beispiels: Viel kleinere werden vergrößert und sehen dann körnig aus; viel größere verlangsamen die Übertragung der Seite übers Netz zum Nutzer.
- main.png
- ist das erste der beiden Logos ganz oben links auf der Seite. Es ist das Logo der Ausgabe selbst. Es kann z. B. hergestellt werden, indem man – mit einem Bildverarbeitungsprogramm wie GIMP – einen geeigneten Bereich des Titelbildes ausschneidet und vielleicht noch verkleinert.
- main_org.png
- ist das zweite der beiden Logos. Es ist das Logo einer Dachorganisation der Ausgabe.
- shortcut.ico
- ist das kleine Bildchen oben links im Browser-Tab. Das Dateiformat muss .ico sein, die Größe sollte 16 mal 16 Pixel sein. Es kann z. B. hergestellt werden, indem man das Logo der Ausgabe verkleinert, vielleicht noch vereinfacht, und als .ico-Datei abspeichert.
Es ist am einfachsten, die neuen, eigenen Bilder genauso zu nennen und über die alten Dateien zu speichern. Die neuen Bilder sieht man auf der Seite, wenn man zum Browser wechselt und die Taste F5 drückt. Manchmal allerdings sind Bilder vom Browser gespeichert und werden nicht erneut heruntergeladen; dann hilft mehrmaliges Drücken der Taste F5 oder das Leeren des Browser-Caches: im Firefox unter Einstellungen – Netzwerk – Jetzt leeren, englisch: Options – Network – Clear Now. Manchmal hilft nur ein Neustart des Browsers.
Möchte man einen anderen Namen als cover.png haben, muss man etwas in der Datei der Startseite ändern; und hier muss man natürlich auch den Text der Titelseite ändern – bis hin zur Bildbeschreibung, die beim Überschweben mit der Maus erscheint. Darauf kommen wir unten zurück.
Möchte man mehr oder weniger Logos, eine Verlinkung, eine etwas andere Gestaltung oder andere Dateinamen für die Logos haben, dann muss man etwas in der Datei _config ändern. Dazu im nächsten Abschnitt.
Die Datei _config ändern. Sprachen festlegen
Einleitung
english Die Datei _config kann man auch im Browser anschauen unter http://localhost:8080/goethe-schiller/_config
. Denn sie ist trotz ihrer besonderen Funktion eine HTML5-XML-Datei, liegt in einem Editionsordner wie die anderen Netzseitendateien auch und wird daher, wenn ein Browser nach der genannten URL fragt, vom System in ein HTML5-Dokument verwandelt und dem Browser zugesandt.
Diese Einheitlichkeit ist etwas grundsätzlich Gutes, auch, dass man so ohne weiteren Aufwand und ohne, dass man Daten an zwei Stellen pflegen muss, eine angenehme Leseansicht bekommt. Für einen gewöhnlichen Leser der Edition ist eine solche Konfigurationsseite aber in der Regel uninteressant, weswegen man sie im Menü oder Inhaltsverzeichnis nicht verlinkt.
Im Browser sind die Legenden zu den Tabellen am besten lesbar. Mit einer Erweiterung des Portalssystemes könnte man die Einträge über den Browser auch ändern; in der vorliegenden Fassung geschieht das in der Datei goethe-schiller/_config
selbst. Die Tabelle für die Sprachen ist die erste; sie beginnt mit der Grenzmarke <table class="mapping" id="lang_ids">
und schließt mit der Grenzmarke </table>
.
Einschub: XML-Grundlagen
english Der folgende Abschnitt geht von der eben geöffneten Datei _config aus und bietet einen Überblick über die wichtigsten XML-Regeln zur Bearbeitung dieser Datei, berücksichtigt aber auch Fragen, die sich später, bei der Eingabe anderer Texte stellen können. Er kann hier also etwas überflogen werden.
- Einen durch Grenzmarken abgesteckten Bereich nennt man Element. In diesem Fall ist das Element eine Tabelle. Grenzmarken werden vom Browser nicht angezeigt, sondern ausgewertet, um den eigentlichen Text richtig darstellen zu können.
- Grenzmarken enthalten den Namen des Elementes, hier
table
. - Eine Grenzmarke wird von den Zeichen
< >
umgeben und dadurch vom eigentlichen Text abgehoben. - Das Zeichen
/
macht eine Grenzmarke zu einer schließenden. - Elemente können leer sein:
<td></td>
ist eine leere Tabellenzelle. Wichtig für die Verwendung des Systems: Damit das eingegebene XML zugleich ein Stück gültiges HTML ist, werden bestimmte leere Elemente (und nur diese) in einer Kurzschreibung geschrieben, bei der die schließende Grenzmarkierung fehlt und die öffnende mit einem/
am Ende geschlossen wird. Es handelt sich nämlich um HTML-Elemente, die immer leer sind:<area/> <base/> <br/> <col/> <embed/> <hr/> <img/> <input/> <keygen/> <link/> <meta/> <param/> <source/> <track/> <wbr/>
.
Nur<br/>
und<img/>
sind für die Herausgebertätigkeit wichtig.
Bei<br/>
muss noch eine Unterscheidung beachtet werden: In einem Fall wieZeilen-<br/>
darf vor dem
wechsel<br/>
kein Leerzeichen stehen; in einem jeden Fall wieWechsel der <br/>
muss ein Leerzeichen stehen. Denn wenn man den Zeilenwechsel entfernt (z. B. für eine Volltextsuche), dann muss im ersten Fall
ZeileZeilen-wechsel
entstehen (woraus nochZeilenwechsel
gemacht werden kann), im zweiten Fall aber unbedingtWechsel der Zeile
, nichtWechsel derZeile
. - Elemente können andere Elemente enthalten, die Grenzmarken sind dann verschachtelt. Vgl.
<table><caption>information</caption></table>
; hier ist dascaption
-Element imtable
-Element enthalten. Die Tabelle für die Sprachenwahl enthält eincaption
-Element (was die Legende ist), einthead
-Element (den Kopf mit den Spaltenüberschriften) und eintbody
-Element (den Rumpf mit den eigentlichen Inhalten). - Eine Verschachtelung muss gemäß den XML-Syntaxregeln überlappungsfrei sein, das heißt, ein Element muss ganz oder gar nicht in einem anderen enthalten sein; seine Grenzmarken stehen also beide innerhalb dieses Elementes oder beide außerhalb.
- Es muss genau ein Element geben, dass alle anderen enthält, mit seinen Grenzmarken also alle anderen umschließt. Im Beispiel der Datei _config ist es ein
article
-Element. - Zeilenumbrüche und Einrückungen – wie sie die Datei _config zeigt – dienen der Lesbarkeit für den menschlichen Betrachter, werden von Maschinen aber entweder gar nicht beachtet oder (wenn sie unmittelbar neben oder innerhalb von eigentlichem Text stehen) durch ein einziges Leerzeichen ersetzt. Ein Beispiel:
(mit Zeilenwechsel und Einrückung) erscheint im Browser bloß als: eins zwei (in ein- und derselben Zeile).<i>eins zwei</i>
- Öffnende Grenzmarken können Zusatzangaben über das Element enthalten, sogenannte Attribute.
class="mapping"
z. B. ist ein Attribut mit dem Namenclass
und dem Wertmapping
. (Vererbung:) Attributangaben eines Elementes gelten für jedes in diesem Element enthaltene Element mit. Wenn aber das enthaltene Element selbst ein Attribut gleichen Namens hat, dann gilt natürlich dessen Wert.class
-Attribute- Ein Browser nimmt den Wert als Stichwort, das in der CSS-Formatvorlage zu finden ist, wo sich dann Formatanweisungen finden. Der Wert kann auch mehrere Stichwörter auf einmal angeben, mit Leerzeichen getrennt. Vgl.
class="index non-source"
.
Bei der Erstellung von Ausgaben ist zu beachten, dass Herausgebertext und Quellentext überall einheitlich und ausdrücklich voneinander unterschieden werden müssen: Herausgebertext muss in einem Element stehen, das entweder selbst oder ererbt von einem enthaltenden Element durchclass="non-source"
ausgezeichnet ist; bei Quellentext ist esclass="source"
. href
-Attribute- Der Wert wird als URL verstanden; z. B. bildet
<a href="user_guide">Link</a>
einen Link auf den vorliegenden Leitfaden, vom Browser dargestellt als: Link. Dabei sind folgende Arten von URLs zu unterscheiden (zu URLs allgemein hier):http://
…-URLs- wie
http://d-nb.info/gnd/118540238
sind die ausführlichsten URLs und werden benutzt, um eine Seite zu verlinken, die in einer anderen Domain liegt als die Seite, die den Link enthält. /
…-URLs- wie
/de/goethe-schiller/start
haben keine Domain-Angabe und werden benutzt, um innerhalb derselben Domain zu verlinken. Das ist nötig, um seine Links nicht ändern zu müssen je nach dem, ob man eine Seite auflocalhost
testen oder auf den Server legen wird. Ein Beispiel:
href="/de/goethe-schiller/start"
bedeutet dasselbe wie
href="http://localhost:8080/de/goethe-schiller/start"
, wenn es auf einer Seite steht, deren URl mit
http://localhost:8080//
beginnt. - …-URLs
- wie das obige Beispiel
user_guide
beginnen nicht mit/
und werden benutzt, um relativ von der Seite aus zu verlinken, auf der sie stehen: In der URL dieser Seite wird alles nach dem letzten/
ersetzt durch die relative URL. Das ist nötig, um durch den Pfad gegebene Einstellungen wie z. B. die Sprache zu erhalten. Ein Beispiel:
href="user_guide#rdfa"
bedeutet dasselbe wie
href="http://localhost:8080/de/portal/user_guide#rdfa
, wenn es auf der Seite
http://localhost:8080/de/portal/editor_guide
steht.
id
-Attribute- Das Attribut
id="lang_ids"
z. B. belegt sein Element mit einer ID. Sie kann in URLs verwendet werden, um nicht auf eine Seite allgemein, sondern auf ein besimmtes Element auf der Seite zu verweisen. Eine solche URL ist die URL der Seite plus#
plus die ID. Vgl.http://localhost:8080/goethe-schiller/_config#lang_ids
. Die ID kann frei vergeben werden, muss aber für das ganze Dokument einmalig sein und darf nur Zeichen enthalten, die in URLs erlaubt sind (welche, wird später erläutert).
Wichtig ist eine Untergliederung durchid
-Attribute vor allem für genaueres Verlinken und Verweisen, insbesondere bei Zitation und Volltextsuche. Meist ist es dann noch nötig, dieid
-Attribute sichtbar zu machen. Auf den vorliegenden Seiten geschieht dass, indem man<a class="local" href="#…"></a>
unmittelbar hinter die Grenzmarkierung mit dem Attributid="…"
setzt (für … ist die tatsächliche ID einzusetzen). lang
-Attribute- Zu beachten sind die Hinweise zu Übersetzungen.
property
-Attributeabout
-Attribute- werden für die RDFa-Auszeichnung verwendet. Dazu hier.
- Eindeutigkeitshalber müssen gewisse Zeichen unbedingt umschrieben werden, wenn sie im eigentlichen Text vorkommen sollen:
- Statt
<
schreibt man<
. - Statt
>
schreibt man>
. - Statt
&
schreibt man&
.
&c<etera> wäre zu schreiben als:
&c<etera>
In Attributwerten gilt außerdem:- Statt
"
schreibt man"
. - Statt
'
schreibt man'
.
Man kann Zeichen übrigens auch in einer numerischen Umschreibung eingeben, entweder mit Dezimal- oder Hexadezimalzahl (die Zahlen kann man z. B. hier finden):- Dezimales
 
oder hexadezimales 
steht für ein schmales geschütztes Leerzeichen. Es ist anzuwenden in u. a., z. B. usw. -
 
oder 
steht für ein normales geschütztes Leerzeichen. Es ist anzuwenden in Wort1 / Wort2 vor dem Schrägstrich. -
‑
oder‑
steht für einen geschützten Bindestrich. -
–
oder–
steht für einen Gedankenstrich. -
“
oder“
steht für “ (öffnende Anführungsstriche) -
”
oder”
steht für ” (schließende Anführungsstriche) -
‘
oder‘
steht für ‘ (öffnenden Anführungsstrich) -
’
oder’
steht für ’ (schließenden Anführungsstrich und Apostroph)
- Statt
Fortsetzung
english Die Sprachenauswahl wird im tbody
-Element der Tabelle lang_ids geändert; Reihen sind tr
-Elemente, Zellen td
-Elemente. Jede Reihe enthält zwei Zellen: Die erste nennt die Sprache mit dem ISO-639-1-Kürzel; die zweite kann den Vermerk default enthalten. Der alte Zustand ist:
<tbody>
<tr><td>ar</td><td></td></tr>
<tr><td>de</td><td>default</td></tr>
<tr><td>en</td><td></td></tr>
<tr><td>fr</td><td></td></tr>
<tr><td>it</td><td></td></tr>
<tr><td>ja</td><td></td></tr>
<tr><td>pl</td><td></td></tr>
<tr><td>ru</td><td></td></tr>
<tr><td>tr</td><td></td></tr>
</tbody>
Das heißt, es werden die neun Sprachen arabisch, deutsch, englisch, französisch, italienisch, japanisch, polnisch, russisch, türkisch dem Nutzer zur Wahl gestellt; deutsch ist die default-Sprache, die genommen wird, wenn noch keine Wahl getroffen wurde und die URL keine Sprachangabe enthält. Möchte man nur deutsch, englisch, französisch zur Wahl stellen und französisch als default-Sprache haben, ändert man die Tabelle ab in:
<tbody>
<tr><td>de</td><td></td></tr>
<tr><td>en</td><td></td></tr>
<tr><td>fr</td><td>default</td></tr>
</tbody>
Welche und wie viele Sprachen soll man anbieten? Die Sprachwahl betrifft einerseits einzelne Wörter und kurze Wendungen in Menü, Kurztitel, Suchtabelle und Suchformular, andererseits ganze Texte im Hauptinhalt der Seite:
- Übersetzungen einzelner Wörter und kurzer Wendungen stehen in der Datei glosses im Ordner portal. In der vorliegenden Fassung stehen dort in allen oben genannten neun Sprachen Übersetzungen für alle bisher eingesetzten Menüpunkte, Kurztitel und Aufschriften. Will man mehr, muss man die Datei ergänzen oder ergänzen lassen. (Dazu hier.) Wenn sich für die ausgewählte Sprache kein Eintrag in der Datei findet, wird der Eintrag für die default-Sprache des Portals genommen; ist auch der nicht da, wird das Stichwort selbst, zu dem die Übersetzung vergeblich gesucht wurde, eingesetzt.
- Übersetzungen ganzer Texte muss man selbst vornehmen. Die Texte in verschiedenen Sprachen werden einfach nebeneinander in den Editionsordner gelegt und durch ein ISO-639-1-Kürzel unterschieden, z. B. start+de, start+en und start (der Text in der default-Sprache, hier etwa französisch, kann bezeichnet werden oder unbezeichnet bleiben). Wenn sich zu einer ausgewählten Sprache kein Text findet, wird der default-Text genommen.
Wichtig ist die Richtigkeit der Sprachauszeichnung: Wenn ein Textstück in einer Datei eine andere Sprache hat, als der Dateiname schließen lässt, dann muss das Element, in dem dieser sprachlich abweichende Text steht, mit einem Attributlang="_"
versehen und statt_
das Sprachkürzel nach ISO 639-1 gesetzt werden. Wenn die Sprache zu oft wechselt (etwa in einem Verzeichnis) oder überhaupt fraglich ist (etwa bei Eigennamen), schreibt manlang=""
und lässt den Attributwert leer; die Sprache ist dann offen gelassen. Das kann man auch für jenes Element machen, das alle anderen enthält; dann ist die Sprache für das ganze Dokument offengelassen.
Wenn man einen ganzen Text übersetzt hat, aber für das Menü viel mehr Sprachen anbietet, mag es sinnvoll sein, wenn der Nutzer nicht nur über die normale Sprachauswahl zur Übersetzung kommt, sondern auch über einen Link im Text selbst. So wird deutlich, dass und welche Übersetzungen es gibt, und es kann nicht nur die ganze Seite, sondern auch eine bestimmte Stellen der Übersetzung verlinkt sein. Dazu hier.
Die nächsten beiden Tabellen erlauben es, von den Logos die Anzahl, die Reihenfolge, etwaige Verlinkung und Schattierung festzulegen und bei Bedarf andere Dateinamen anzugeben. Genaue Hinweise finden sich in der jeweiligen Legende (dem caption
-Element) der Tabellen.
Änderungen in der Datei _config werden erst nach einem Neustart des Systems wirksam.
Menüpunkte
english In der letzten Tabelle kann man die Einträge im Menü links auf der Seite festlegen, das heißt, festlegen, welche Netzseiten als Menüpunkte verlinkt sein sollen. Genaue Hinweise findet man in der Legende der Tabelle. Zum Ausprobieren kann man eine der im Beispiel schon vorhandenen Seiten, z. B. die Datei introduction, kopieren, die Kopie im selben Ordner unter anderem Namen speichern und den neuen Namen zu den Menüpunkten hinzufügen.
Wenn man diese Einträge gemacht hat, möchte man sie möglicherweise in den Übersetzungen ergänzen, damit statt des bloßen, einsprachigen Dateinamens eine Übersetzung angezeigt wird, die sich nach der Sprachwahl des Nutzers richtet. Dazu im nächsten Abschnitt.
Die Übersetzungen ergänzen
english Im Ordner portal befindet sich die Datei glosses, die Übersetzungen einzelner Wörter und kurzer Wendungen enthält, wie oben beschrieben. Der Inhalt der Datei ist eine Tabelle, grundsätzlich also schon aus der Datei _config bekannt (dazu hier) und übrigens ebenfalls im Browser anschaubar. Um Übersetzungen zu ergänzen, fügt man Reihen folgender Gestalt hinzu:
<tr><td>1</td><td>2</td><td>3</td></tr>
Für 1
setzt man das Stichwort ein: Bei Menüpunkten ist das einfach der Name der Datei, auf die der Menüpunkt verlinkt; bei den Kurztiteln ist es, wie wir noch sehen werden, der Name des Editionsordners. Für 2
muss das zweibuchstabige Sprachkürzel gemäß ISO 639-1 eingesetzt werden und für 3
die Übersetzung, die dem Stichwort und der Sprache zuzuordnen ist. Beispiele finden sich in der Datei selbst zur Genüge.
URL und Kurztitel festlegen
english Um den Beispielnamen goethe-schiller in der URL der Seite und im Kurztitel unter den Logos auszutauschen, benennt man zunächst den Editionsordner um. Der neue Name des Editionsordners wird in der URL der Netzseite verwendet. Daher kann der Name nur jene Zeichen enthalten, die in URLs erlaubt sind. Das sind in etwa auch jene Zeichen, die in Ordner- und Dateinamen erlaubt sind: einfache lateinische Buchstaben, Zahlen und Buchstaben anderer Schriftsysteme; ausgeschlossen aber sind Leerzeichen und alle Interpunktionszeichen außer den folgenden vier, die erlaubt sind: - . _ ~ Genauer gesagt: Erlaubt sind die sogenannten iunreserved characters, die im RFC 3987 auf Seite 7 definiert sind. Für das Portal sei darüber hinaus empfohlen, auf Großbuchstaben zu verzichten, um die Gefahr von Verwechslungen zu verringern und sicherzustellen, dass zwei verschiedene Namen immer auch verschiedene Dateinamen sind (denn manche Betriebssysteme unterscheiden bei Dateinamen nicht zwischen Groß- und Kleinschreibung).
Nach der Umbenennung muss man das System neu starten und im Browser statt http://localhost:8080/goethe-schiller
nun http://localhost:8080/[Editionsordner]
eingeben. Da in der URL nur die Edition, keine Seite der Edition und auch keine Sprache angegeben sind, setzt das System die default-Sprache und die default-Seite in die URL ein, wie sie in der Datei _config bestimmt werden konnten. Ein Leser gelangt also auch mit einer solchermaßen abgekürzten URL zur Edition, und zwar zur default-Seite (die dann die Startseite ist) in der default-Sprache.
Allerdings kann man vorher noch die Übersetzungen um den neuen Ordnernamen ergänzen: Das geschieht wie oben beschrieben, wobei man als Stichwort den Ordnernamen nimmt. Es folgt ein Beispiel, und zwar mit der Besonderheit, dass in den Übersetzungen (nach Briefwechsel, Correspondence und Correspondance) ein Enterzeichen gesetzt ist:
<tr><td>fantin-scholderer</td><td>de</td><td>Briefwechsel
Fantin-Latour und Scholderer</td></tr>
<tr><td>fantin-scholderer</td><td>en</td><td>Correspondence
Fantin-Latour and Scholderer</td></tr>
<tr><td>fantin-scholderer</td><td>fr</td><td>Correspondance
Fantin-Latour et Scholderer</td></tr>
Das Enterzeichen wird übernommen und dient der besseren Darstellung des Kurztitels. Dazu hier.
Erreichbarkeit der Seiten. Inhaltsverzeichnis
english Es sind drei besondere Möglichkeiten vorgesehen, wie ein Leser von der Startseite aus letztlich alle Seiten der Edition erreichen kann: erstens über das Menü, wie oben beschrieben, zweitens über ein Inhaltsverzeichnis, drittens über Indizes. Im Menü stehen nur wenige Hauptseiten. Im Inhaltsverzeichnis können grundsätzlich alle Seiten stehen; aber eine sehr lange Reihe von Seiten – z. B. hunderte von Briefen – sind besser in einem sortier- und filterbaren Index untergebracht. Hier zunächst zur Einrichtung eines Inhaltsverzeichnisses: Die Seite des Inhaltsverzeichnisses heißt im Beispielordner table_of_contents und ist auch als Menüpunkt verzeichnet. Die entsprechende Datei enthält aber nur einen Verweis auf das Template, mit dem das Inhaltsverzeichnis nämlich automatisch erstellt wird. Dazu braucht es eine Aufstellung der Seiten, die im Inhaltsverzeichnis auftauchen sollen; diese Aufstellung steht in der Datei _table_of_contents_ids. Sie kann wie die Datei _config im Browser betrachtet werden und weist auch die bekannte Tabellenstruktur auf. In die Tabellenzeilen trägt man die Namen jener Dateien ein, die im Inhaltsverzeichnis berücksichtigt werden sollen. Automatisch wird dann gesorgt für: Übersetzungen der Dateinamen je nach der Sprache des enthaltenen Textes, die Überschriften in den Dateien, Einrückung je nach Überschriftenebene und Links zur jeweiligen Seite oder Überschrift. Hat man es mit vielen Seiten zu tun, wird man auch die Tabellenzeilen automatisch erzeugen wollen. So erzeugt etwa das folgende Pythonskript eine Datei _table_of_contents_ids im Ordner FOLDERPATH
, in der alle Seiten dieses Ordners berücksichtigt sind. Aus dieser Datei sind dann von Hand jene Seiten herauszulöschen, die man nicht im Inhaltsverzeichnis haben will, etwa die Dateien _config, _table_of_contents_ids, table_of_contents und die Titelseite(n). Hier das Skript:
Man kann die Zeilen in eine leere reine Textdatei kopieren, die Textdatei schließen, die Endung von .txt in .py umbenennen und mit Doppelklick starten (wenn Python 3.4 installiert ist, wie oben angegeben). Für /path/to/the/folder/of/the/edition
muss man aber vorher den richtigen Pfad zum Editionenordner angeben.
import os
FOLDERPATH = '/path/to/the/folder/of/the/edition'
RESULTNAME = '_table_of_contents_ids'
DOC_TEMPLATE = '''
<article class="index non-source">
<table class="mapping">
<!-- Ensure, that every table_of_contents_id
is the name of a webpage-file. -->
<thead>
<tr><th>table_of_contents_id</th></tr>
</thead>
<tbody>
{}
</tbody>
</table>
</article>
'''
doc = DOC_TEMPLATE.format(
os.linesep.join(
'\t\t\t<tr><td>{}</td></tr>'.format(name)
for name in os.listdir(FOLDERPATH)
if os.path.isfile(os.path.join(FOLDERPATH, name))))
with open(
os.path.join(FOLDERPATH, RESULTNAME),
'w',
encoding = 'utf-8') as file:
file.write(doc)
Titelseite. Bibliographische Metadaten. RDFa
english Die Titelseite ist die Startseite einer Ausgabe. Beispiele für Startseiten finden sich im Editionsordner: die Dateien start und start+en; letztere die englische Fassung der ersteren. (Auf ein +de kann verzichtet werden, weil die default-Sprache deutsch ist.) Nach diesen Mustern kann man am einfachsten seine eigene Startseite erstellen, indem man jenen Text, der im Browser sichtbar ist, austauscht, nicht zu vergessen die Beschriftung zum Bild, die erscheint, wenn man das Hintergrundbild mit der Maus überschwebt. (Zum Austausch des Hintergrundbildes hier.)
Bei der Eingabe in die Datei sind die oben gegebenen Regeln genau zu beachten.
Ein Nutzer muss auf der Titelseite alle bibliographischen Metadaten finden. Eine Liste dazu gibt es hier. In dieser Liste steht auch jeweils der Ausdruck, der für die RDFa-Auszeichnung verwendet wird. Zu RDFa allgemein hier. Die in den beiden Musterdateien start und start+en schon vorliegende Auszeichnung kann grundsätzlich beibehalten werden. Zu beachten ist:
- Eine RDFa-Auszeichnung ist eine Aussage.
Das Subjekt solcher Aussage wird durch einabout
-Attribut festgelegt, und zwar nur für das Element, in dem das Attribut steht. Das Subjekt der Titelseite wird automatisch gesetzt und ist die Ausgabe selbst. Für die Titelseite schreibt man also nicht selbst einabout
-Attribut. In den Indizes hingegen schon, wie unten erläutert wird. Daher folgender Hinweis: Dasabout
-Attribut muss eine eindeutig auf etwas weisende URL sein (z. B.http://d-nb.info/gnd/118540238
). Das, worauf verwiesen wird, ist das Subjekt.
Eine RDFa-Aussage ergibt sich, sobald zu einem Subjekt noch einproperty
-Attribut hinzukommt. Dieses Attribut steht für einen Prädikatsausdruck (wie ‘… hat den Namen …’) und muss eine URL sein, die auf eine Stelle weist, wo dieser Ausdruck aufgeführt und möglichst erklärt ist. Eine Sammlung solcher Ausdrücke nennt sich Vokabular. Möchte man zweimal dasselbe ausdrücken, sollte man zweimal denselben Ausdruck aus demselben Vokabular verwenden. Zu empfehlen ist, so weit wie möglich das Vokabular von schema.org, nötigenfalls hier ergänzt. Ein Beispiel:<h1 property="schema:headline">Briefwechsel zwischen Goethe und Schiller</h1>
heißt ‘… hat als Titel Briefwechsel zwischen Goethe und Schiller’. Für … wird das Subjekt eingesetzt, das auf der Titelseite automatisch die Ausgabe selbst ist.
Mehr zu RDFa hier. - Übersetzte Fassungen der Titelseite haben
alternativeHeadline
stattheadline
- In
<a class="creator" property="schema:editor" href="http://d-nb.info/gnd/">Xxxx Xxxxxxx</a>
muss manXxxx Xxxxxxx
durch den Namen der Person ersetzen und anhttp://d-nb.info/gnd/
die GND der Person anhängen, wenn vorhanden, oder sonst eine andere Normdatei verlinken.
Weitere Seiten. Abermals RDFa
english Weitere Seiten kann man nach dem schon bei der Titelseite angewandten Grundmuster erstellen:
- Bei der Eingabe in die Datei sind die oben gegebenen Regeln genau zu beachten. Sie sind dafür da, dass man wohlgeformtes XML schreibt; einige sind hinzugefügt, damit mehrere, in einem Portal erscheinende Ausgaben einheitlich dargestellt werden können.
- Ansonsten ist alles erlaubt, was gefällt, und alles möglich, was mit HTML und CSS möglich ist. Im Netz findet man viele Anleitungen, maßgebliche vom W3C (HTML, CSS), teils leserfreundlichere von Mozilla (HTML, CSS). Im Netz findet man vor allem auch eine Fülle von Anregungen; denn man kann sich von jeder Netzseite das zugrundeliegende HTML und CSS ansehen. Dazu hier.
- Besonders leicht ist die Übertragung natürlich von den Netzseiten, die in der heruntergeladenen Grundlage enthalten sind; darunter auch der vorliegende Leitfaden. Am einfachsten ist es, die Minimalbeispiele im Ordner goethe-schiller auszubauen, die alle bislang verfügbaren Grundmuster abdecken. Man vergleiche die folgenden Dateien und ihre Darstellung im Browser:
- _config
- Dazu hier.
- start
- Titelseite mit Hintergrundbild und RDFa-Auszeichnung.
- start+en
- Übersetzung der Titelseite.
- table_of_contents
- _table_of_contents_ids
- Zur Erstellung eines Inhaltsverzeichnisses. Dazu hier.
- introduction
- Einfacher Fließtext mit Überschriften, Absätzen, Randnote. Alles ist Herausgebertext (kein Quellentext), daher
class="non-source"
. Dazu hier. - introduction+en
- Übersetzung des Fließtextes.
- 00001
- 00002
- Fließtexte mit Querverlinkung und Metadaten, die automatisch aus dem Verzeichnis der Dokumente gelesen und dem Fließtext vorangestellt werden. Das Verzeichnis und die zum jeweiligen Dokument gehörige Zeile werden als URL in einem Attribut des obersten Elementes angegeben:
data-meta_source_id="index_of_documents#00001"
. Hier ist00001
derid
-Attributwert der Zeile, in der das Dokument eingetragen ist.
Das Dokument ist überwiegend Quellentext, daher wirdclass="source"
in das den Text selbst umgebende Element gesetzt. Eingestreuter Herausgebertext wird in ein Element mitclass="non-source"
geschrieben. - index_of_documents
- Verzeichnis mit Sortier‑, Such- und Filterfunktion sowie RDFa-Auszeichnung. Die Anfangssortierung wird in einem Attribut des obersten Elementes festgelegt:
data-table_config_json="{"order": [[1, "asc"]]}"
. Mit 1 oder einer anderen Zahl gibt man die Spalte an (wobei die Zählung mit 0 beginnt!), mit asc oder desc unterscheidet man zwischen auf- und absteigend. Der Attributwert muss im JSON-Format gehalten sein. Das Format erfordert "-Zeichen, die im Attribut mit"
umschrieben sein müssen. Für alle Spalten steht eine Freitextsuche zur Verfügung. Eine Filterung über die Menge der Einträge in einer Spalte ist sinnvoll, wenn die Einträge schlagwortartig sind, und wird automatisch eingerichtet, wenn man das Attributdata-select=""
in die Spaltenüberschrift schreibt. Die Spaltenüberschrift findet sich imthead
-Element der Tabelle.
Das Verzeichnis enthält Metadaten zu den Dokumenten, die hier auch gleich verlinkt sind und daher nicht im Inhaltsverzeichis stehen müssen. - index_of_persons
- Das Verzeichnis führt die Personen mit RDFa-Auszeichnung auf und verlinkt auf Stellen, wo sie als erwähnt gebucht sind. Der
id
-Attributwert der Zeile kann gut als interne ID der Person verwendet werden, z. B., um Erwähnungen eindeutig mit dieser Person und zugleich mit dem Index und damit auch weiteren Metadaten zu verlinken: Eindeutig auf den Eintrag Goethe z. B. verweisthref="index_of_persons#2"
, wenn es auf einer Seite in goethe-schiller steht.href="/goethe-schiller/index_of_persons#2"
, wenn es auf einer Seite in derselben Domain steht, in der auch die Seite index_of_persons liegt.http://
[Domain]/goethe-schiller/index_of_persons#2
in jedem Fall, wenn man die Domain (z. B.quellen-perspectivia.net
) eingesetzt hat.
about="#2"
im Element dieser Zeile legt daher Goethe als das Subjekt für RDFa-Aussagen fest. Zwei Beispiele, in denen … für das Subjekt steht:<td property="schema:name">Goethe, Johann Wolfgang (von)</td>
heißt: ‘… hat den Namen Goethe, Johann Wolfgang (von)’.<a href="http://d-nb.info/gnd/118540238" property="schema:sameAs">
heißt: ‘… ist dasselbe wie das von der IDhttp://d-nb.info/gnd/118540238
Bezeichnete’.
- index_of_places
- Sind Tabellen sehr groß, verzögert sich die Darstellung im Browser zu sehr. Um abzuhelfen, kann man die HTML-XML-Datei auf die Spaltenüberschriften beschränken und die Daten selbst in eine JSON-Datei auslagern; im vorliegenden Beispiel ist das die Datei data/index_of_places.json. Das Laden der Daten und ihre Darstellung in der Tabelle wird dann vereinfacht (durch sogenanntes AJAX).