Modul: Text & Tabellen

XML (Extensible Markup Language)

Aufbau eines XML-Dokuments

Am Anfang eines XML-Dokuments steht zumeist ein Prolog. Im XML-Beispiel unten ist der Prolog in weißer Schrift hervorgehoben.

Ein sehr einfaches XML/TEI-Dokument mit dem Absatz "Dies ist nicht zu viel Text." <?xml version="1.0"?> <!DOCTYPE tei SYSTEM "file:///D:/tei/tei_all.dtd"> <?xml-stylesheet type="text/xsl" href="file:///D:/tei/html/html.xsl"?> <TEI>     <teiHeader>         <fileDesc>             <titleStmt>                 <title>XML/TEI-Beispiel minimaler Komplexität</title>             </titleStmt>             <publicationStmt>                 <p>Open Educational Resources, 2023</p>             </publicationStmt>             <sourceDesc>                 <p>Born digital</p>             </sourceDesc>         </fileDesc>     </teiHeader>     <text>         <body>             <p>Dies ist nicht zu viel Text.</p>         </body>     </text> </TEI> XML-Deklaration Dokumenttyp-Deklaration Wie im Browser darstellen? Wurzelelement (Start-Tag) Wurzelelement (End-Tag) Regeln aus Datei auslesen

Dem Prolog folgen das Wurzelelement (rot) und darunter alle anderen Elemente. Diese anderen Elemente sind alle Kindelemente oder Kindeskinder des TEI-Wurzelelements und der besseren Lesbarkeit wegen eingerückt.

Merke! In jedem XML-Dokument muss es genau ein Wurzelelement geben.


Der Prolog hingegen kann mehrere gleichrangige Bestandteile enthalten. Im Beispiel besteht der Prolog aus drei Zeilen.

Zeile 1: Die XML-Deklaration kennzeichnet die Datei als XML-Dokument und hilft so Verwechslungen zu vermeiden.

  • Im Beispiel ist als Version 1.0 angegeben. Daneben gibt es noch die Version 1.1, die mehr Sonderzeichen in Elementnamen erlaubt und nur selten verwendet wird
  • Die Versionsnummer ist in Form eines Attributs beigegeben. Attribute haben die Form Name="Wert" (hier Version="1.0")

Zeile 2: In der Dokumenttyp-Deklaration (DTD) stehen

  • der Name des deklarierten Typs, im Beispiel tei
  • ob die DTD öffentlich ist (PUBLIC für öffentlich, SYSTEM für nicht öffentlich)
  • die Elementdeklarationen (welche Elemente es gibt und für jedes Element, welche Kindelemente das Element haben muss bzw. darf)
  • die Attributlistendeklationen (Attributnamen, zulässige Werte, und ob das Attribut erforderlich ist oder weggelassen werden kann)
  • Entities (Texte für automatische Ersetzungen)

Im Beispiel sind die drei letzten Punkte in einen File tei_all.dtd ausgelagert, der lokal unter Windows auf Laufwerk D: im Verzeichnis tei gespeichert ist. Anstelle eines Files könnte hier auch eine Web-Adresse angegeben sein.

Zeile 3: Die Verarbeitungsanweisung xml-stylesheet gibt an, wie die Elemente grafisch dargestellt werden sollen. Die Regeln selbst sind im Beispiel in einen XSL-File (Extensible Stylesheet Language) ausgelagert. XSL ist übrigens selbst XML, d.h. gehorcht der XML-Syntax.

Merke! XML-Elemente sind stets hierarchisch strukturiert, d.h. an oberster Stelle steht ein Wurzelelement und sie können beliebig viele Kindelemente, aber nur ein Elternelement haben. Gekennzeichnet werden die Elemente durch Tags:

  • Jedes Element hat ein Start-Tag und ein End-Tag, das von spitzen Klammern umschlossen wird. Das End-Tag besitzt zusätzlich einen Schrägstrich: </...>
  • In jedem Tag muss ein Elementname vergeben sein. Der Elementname im Start-Tag muss immer exakt mit dem Elementnamen im End-Tag übereinstimmen. Groß- und Kleinschreibung im Namen sind signifikant
  • Für leere Elemente können Start- und End-Tag zusammengefasst werden zu <.../>, d.h. vor der schließenden Spitzklammer steht ein Schrägstrich. Ein Beispiel ist das Element <empty/>, das zur Markierung leerer Elemente im TEI-Quelltext verwendet wird.

Ein Element kann leer sein oder Inhalt enthalten. Aber selbst mit Inhalt darf sich ein Element nicht über das End-Tag seines Elternelements hinaus erstrecken, sondern muss schließen, ehe das Elternelement schließt.

Das Beispiel oben erfüllt diese und alle übrigen XML-Regeln. Das Diagramm zeigt die hierarchische Struktur der Elemente des Beispiels als Baum.

Ein TEI-Dokument besteht aus einem Wurzelelement TEI, das sich in einem Header und einen Text-Body gliedert. Darunter befinden sich weitere Elemente.

Ein TEI-Dokument besteht aus einem Wurzelelement TEI, das sich in einem Header und einen Text-Body gliedert. Darunter befinden sich weitere Elemente TEI teiHeader text fileDesc body titleStmt publicationStmt sourceDesc p title p p

Die Baumstruktur ergibt sich daraus, dass jedes Element genau ein Elternelement hat. Ausgenommen ist nur das Wurzelelement, welches wie ein Stamm den ganzen Baum trägt.

Hinweis: In diesem Kurs wird davon ausgegangen, dass Sie XML-Dialekte nutzen aber nicht (weiter-) entwickeln wollen. In dem Fall wird der Prolog zusammen mit den DTD-, Schema- und Style-Dateien in der Regel einmal zusammengestellt und dann verwendet. Zum Prolog und zu den Schemasprachen zwei Seiten weiter wird es im Abschlussquiz keine Fragen geben.