Technische Dokumentation – Version 1.0
Das System besteht aus drei grundlegenden Dateien: einer XML-Datei (IPA.xml
), welche die
Informationen zu allen hinterlegten Zeichen enthält, einer Dokumenttyp-Definition
(ipa.dtd
), durch welche die erlaubten Einträge in der XML-Datei definiert werden und
einem XSL-Stylesheet (IPA.xsl
), das für die Transformation der XML-Daten in
ein vom Browser lesbares Format – in diesem Fall (X)HTML – verantwortlich
ist.
Diese Dateien werden durch drei JavaScript Skripte ergänzt (insertAtCursor.js
,
onclickSwitcher.js
und tooltip.js
). Die Skripte sind für die Funktionalität, d.h. das
Einfügen von Text an der Cursorposition, Verknüpfung und Wechsel zwischen
Event-Handlern (Anwenderereignissen) für die Wiedergabe von Audio und das Einfügen des
Zeichen-Codes bei Mausklick und die Anzeige der erweiterten Informationen beim Bewegen
des Mauszeigers über die Symbole verantwortlich.
Um die Logik des XSL-Stylesheets vom Layout zu trennen, wurden (wenn möglich) die
meisten Style-Elemente in eine weitere XSL-Datei (attributes.xsl
) und ein CSS-Stylesheet
(styles.css
) ausgegliedert.
Alle Dateien wurden manuell erstellt und mit unterschiedlichen XML-Editoren und (validierenden) XML-Parsern auf Wohlgeformtheit und Validität überprüft. Funktionalität und Erscheinungsbild wurden über die internen XSLT-Prozessoren von Mozilla Firefox, Google Chrome und Internet-Explorer Edge auf unterschiedlichen Betriebssystemen getestet und angepasst.
Listing 2.1: | Ordnerstruktur im Projekt |
Datengrundlage des Systems bildet die Datei IPA.xml
. In ihr sind sämtliche Zeichen und
Informationen hinterlegt. Zusätzlich wurden für eventuell hinzukommende Zeichen
(insbesondere bei Konsonanten und Vokalen) Leerstellen gelassen, die einen Nachtrag an der
jeweiligen Position erleichtern.
Im Header der XML-Datei befindet sich die Angabe der zugrunde liegenden XML-Version (XML 1.0 Spezifikation), der verwendeten Zeichenkodierung (UTF-8-Kodierung), der URI der Dokumenttyp-Deklaration (d.h. der Bezug zur externen Dokumenttyp-Definition, in welcher Angaben zu Struktur und Regeln der XML-Datei definiert sind) sowie der Verweis auf das zur Weiterverarbeitung (zur Transformation) zu verwendende Stylesheet.
Listing 2.2: | Aufbau der XML-Datei (IPA.xml) |
Auf das Wurzelelement <ipa>
folgen aneinandergereiht alle Laute des Systems. Jeder Laut
ist in ein <sound>
-Element eingebettet, das den Vorgaben der DTD entspricht und ist mit
einem Attribut type
versehen, das die jeweilige Kategorie (Konsonant, Vokal, Diakritikum
etc.) festlegt.
Listing 2.3: | Beispiel für ein sound–Element eines Konsonanten aus der Datei IPA.xml |
Die Einträge innerhalb der einzelnen <sound>
-Elemente der XML-Datei (IPA.xml
)
entsprechen den Vorgaben der externen Dokumenttyp-Definition (ipa.dtd
) im
Unterordner /data
, mit welcher das XML-Dokument verknüpft ist. Die DTD legt das
XML-Dokument als eine Datei fest, die aus mehreren Elementen des Typs <sound>
besteht, welche wiederum die Elemente type
, manner
, place
etc. (Typ, Art, Ort etc.)
enthalten können. Ein sound
-Element muss mit einem Attribut type
versehen sein.
Zusätzlich müssen die Elemente manner
und name
angegeben werden. Alle weiteren
Angaben sind optional. Die Attribute der sound
-Elemente müssen mit einem der
angegebenen Typen aus der Attributliste (Konsonant, Vokal, Diakritikum etc.)
übereinstimmen.
Listing 2.4: | Exemplarischer Aufbau der Dokumenttyp-Definition (ipa.dtd) |
Innerhalb des <sound>
-Elements müssen die grundlegenden Informationen zu Artikulationsart,
-ort und -modus hinterlegt sein. Die Angabe der Klasse (class
) definiert, ob es sich
bei dem Eintrag um einen existierenden Laut (pos
=possible/möglich), um einen
nicht vorhandenen aber theoretisch möglichen Laut (emp
=empty/leer), oder um
einen als nicht artikulierbar klassifizierten Laut (imp
=impossible/unrealisierbar)
handelt.
Existierende Laute (bzw. Symbole) haben mindestens ein weiteres Element mit der
Bezeichnung name
. In diesem Element sind die zugehörigen Zeicheninformationen hinterlegt,
die Informationen zum Unicode-Zeichen in hexadezimaler Schreibweise (z.B. ʔ), zur
Kardinalzahl des Symbols im Alphabet der IPA (z.B. 113) und einer Angabe zur Notation
in LATEX (z.B. \textglotstop) bestehen müssen. Alle weiteren Angaben – wie
beispielsweise die Notation in Praat oder SAMPA – sind optional gehalten. Dies ist
notwendig, da diese Notationsarten nicht für jedes Symbol des IPA eine Entsprechung
bereithalten.
Das XSL-Stylesheet bestimmt maßgeblich die Ausgabe des Dokuments. Im Header des
Stylesheets wird die verwendete XML-Version und UTF-8 Zeichenkodierung festgelegt.
Der Eintrag <xsl:stylesheet...>
deklariert, dass es sich um ein Stylesheet der
XSLT 1.0 Spezifikation handelt, welches Anweisungen aus dem Namensraum der
XSL-Transformationen beinhaltet. Als Ausgabemethode ist HTML festgelegt.
Listing 2.5: | Struktur der XSL-Datei (IPA.xsl) |
Die XSL-Datei besteht aus zwei Teilen. Im ersten Teil des Stylesheets wird der Grundaufbau
der Seite definiert. Hier befinden sich innerhalb der html
-Tags die Elemente head
und
body
.
In den Kopfdaten (dem head
-Element) werden zunächst Metadaten des Dokuments (z.B. ein
Titel) angegeben. Zusätzlich können hier weitere Meta-Informationen über das Dokument
(z.B. Schlüsselwörter und Beschreibungen, verwendete Zeichenkodierung etc.) hinterlegt
werden. Das head
-Element beinhaltet weiterhin alle für den Browser relevanten
Instruktionen und Informationen, z.B. Styling-Angaben, die durch Einbinden eines externen
CSS-Stylesheets referenziert werden und die Aufrufe von Skript-Dateien, die für die
Funktionalität des Dokuments beim Seitenaufruf bereitstehen müssen.
Listing 2.6: | Auszug aus dem head-Element der XSL-Datei (IPA.xsl) |
Innerhalb der <body>
-Tags werden einzelne Elemente, z.B. (vorerst leere) Tabellen, das
Grundgerüst der Vektorgrafik für das Vokaltrapez sowie das Eingabefeld erstellt und auf
der Seite angeordnet. Mit dem Befehl xsl:call-template...
, welcher auf den
Template-Teil des Dokuments referenziert, können die Elemente mit ihrem jeweils
zugehörigen Inhalt gefüllt werden. Attribute (z.B. IDs oder „Style“-Angaben etc.) können
innerhalb des XSL-Dokuments selbst gesetzt werden, in das externe CSS-Stylesheet
ausgelagert werden, oder aber aus der im Header der XSL-Datei eingebundenen
Stylesheet-Datei (attributes.xsl
) in Form von vordefinierten „Attribut-Sets“ abgerufen
werden.
Listing 2.7: | Auszug aus dem body-Tag der XSL-Datei (IPA.xsl) |
Der zweite Teil der XSL-Datei – d.h. der Abschnitt nach dem „match-all“-Template, in
welchem der HTML-Teil der Ergebnisdatei definiert ist – besteht aus einer freien Abfolge von
Template-Regeln. Nach der letzten Anweisung im body
-Tag (xsl:apply-templates
select=...
) werden alle Knoten des Typs sound
zur weitergehenden Bearbeitung
ausgewählt. Ein vereinfachtes Beispiel für die Verarbeitung eines Template-Aufrufs
(xsl:call-template...
) am Beispiel der Suprasegmentalia findet sich im folgenden
Ausschnitt:
Listing 2.8: | Beispiel-Template aus dem Anweisungsteil der XSL-Datei (IPA.xsl) |
Der Aufruf xsl:call-template name=...
aus dem body
-Element ruft das Template mit
dem Namen Suprasegmentals
aus dem Template-Abschnitt der XSL-Datei auf. Die
xsl:for-each
-Anweisung filtert mittels XPath-Ausdruck (select=“//sound[@...]“
)
diejenigen sound
-Elemente aus der XML-Datei, die das Attribut type=’suprasegmental’
aufweisen. In die – schon vor Template-Aufruf definierte – Tabelle wird nun für jedes
gefundene Element eine neue Tabellenzeile (tr
) erstellt und die Zelle (td
) mit dem
entsprechenden Zelleninhalt (in diesem Fall dem Unicode-Zeichen) versehen.
Die eigentliche Vorgehensweise ist komplexer als hier dargestellt, da jede Zeile meist noch mit zusätzlichen Informationen wie der Bezeichnung des Symbols und ggf. Beispielen angereichert wird. Eine Darstellung der einzelnen Elemente und Bausteine ist schematisch in Abschnitt 3 dargestellt.
Für die Ausgabe und Zuordnung der Unicode-Zeichen sind zwei Templates zuständig – die
Templates „Transcribe
“ und „Plot_Symbol
“. Beide befinden sich im oberen Teil des
Template-Abschnitts des XSL-Stylesheets.
Innerhalb aller Templates (Suprasegmentals, Diacritics, Accents etc.) wird das Template
Transcribe
aufgerufen sobald in einer Zelle das Unicode-Zeichen ausgegeben werden soll.
Die Unicode-Kodes (bzw. die Unicode-Entities) der Grundzeichen sind in der XML-Datei
innerhalb des name
-Knotens im unicode
-Tag hinterlegt. Da für Beispiele – diese
liegen im example1
- oder example2
-Knoten – ebenfalls Angaben des Unicode-Kodes
existieren, wird zur Bestimmung des Pfades ein Parameter übergeben, der das
jeweils zutreffende Zeichen lokalisiert. Dieser Pfad wird bereits beim Aufruf des
Templates Transcribe
übergeben. Soll eine Tabellenzelle mit dem Inhalt des ersten
Beispiels gefüllt werden, wird statt des Parameters ./name
der Parameter ./example1
übergeben.
Listing 2.9: | Das Template Transcribe |
Der Ausgabewert wird durch die select
-Anweisung initiiert. Dabei legt $name
den Pfad fest,
aus welchem das Zeichen gewählt werden soll. Die Angabe von /unicode
navigiert
letztlich zum unicode
-Element, dessen Inhalt daraufhin in die Ausgabe geschrieben
wird.
Da die Vektorgrafik etwas anders strukturiert ist, konnte hier das Transcribe
-Template
nicht vollständig wiederverwertet werden. Das Template erfüllt zwar auch hier seine
Aufgabe, die Elemente mit Metadaten anzureichern (durch den Aufruf des Templates
Add_metadata
), die eigentliche Ausgabe der Zeichen innerhalb der Grafik ist jedoch in ein
weiteres, einfaches Template – das Template Plot_Symbol
– ausgelagert.
Die Gründe für die separate Ausgabe der Zeichen liegen darin, dass die Vektorgrafik aus mehreren Ebenen aufgebaut ist und eine geringfügig abgeänderte Syntax verlangt. Um zu verhindern, dass der Nutzer das Zeichen exakt treffen muss, wird unterhalb jedes Symbols ein Kreis-Element generiert, um die „klickbare“ Fläche zu vergrößern. Mit dieser Fläche sind die Metainformationen verknüpft. Das sichtbare Zeichen liegt eine Ebene höher. Der Aufbau der Vektorgrafik ist in Abschnitt 3.3 skizziert.
Listing 2.10: | Das Template Plot_Symbol |
Zusätzliche Attribute für die Weiterverarbeitung mit Skripten werden durch das Template
Add_metadata
erstellt. Dieses Template weist jedem sound
-Element mit der Klasse
class=’pos’
– d.h. jedem nicht-leeren Element – eine Reihe an Attributen zu, die für die
Funktionalität entscheidend sind. Das Metadaten-Template befindet sich am Ende der Datei
IPA.xsl
. In Abschnitt 3 ist das Zusammenwirken der Templates (vom Aufruf
innerhalb des body
-Tags bis hin zu den Aufrufen der Templates für die Ausgabe der
Unicode-Zeichen und der Metadaten) für einige Elemente der IPA-Tabelle schematisch
skizziert.
Listing 2.11: | Das Metadaten-Template (Add_metadata) |
Listing 2.12: | Metadaten-Attribute der resultierenden (X)HTML-Datei am Beispiel des Glottal Stop |