2. Modul: XML-Grundlagen für LIDO

XML

XML (Extensible Markup Language) ist, wie der Name sagt, eine erweiterbare Auszeichnungssprache. XML kann genutzt werden, um Informationen bzw. Text zu strukturieren.

XML-Dokument

Zum Bearbeiten von XML-Dateien können Texteditoren oder spezielle XML-Editoren genutzt werden. Zum Lesen von XML-Dokumenten/XML-Dateien können Sie auch einen Browser verwenden. In der ersten Zeile eines XML-Dokuments steht die XML-Deklaration. An der XML-Deklaration erkennt das ausführende Programm, dass es sich um eine XML-Datei handelt.

<?xml version="1.0" encoding="UTF-8"?>

Die XML-Deklaration kann eine Angabe zur Kodierung enthalten. UTF-8 ist die häufigste Kodierung im Internet. Sollte Ihr LIDO-XML-Dokument "merkwürdige" Zeichen enthalten, könnte es sein, dass die Kodierung bzw. die Angabe der Kodierung nicht stimmt.

Wurzelelement

Ein XML-Dokument enthält ein Wurzelelement (root element), welches alle Inhalte des Dokuments (weitere Unterelemente oder Text) enthält. Ein LIDO-XML-Dokument kann einen oder mehrere LIDO-Datensätze (record) beinhalten (s. Modul "Dokumentstruktur, Elementtypen, Attribute"). Enthält das Dokument nur einen Datensatz, dann kann das Wurzelelement entweder <lido:lidoWrap> oder <lido:lido> sein. Enthält das Dokument mehrere Datensätze, dann muss das Wurzelelement <lido:lidoWrap> sein.

Wurzelelement <lido:lidoWrap> in einem Dokument mit einem LIDO-Datensatz:

<lido:lidoWrap>
    <lido:lido>[Inhalt des Datensatzes]</lido:lido>
</lido:lidoWrap>

Wurzelelement <lido:lido> in einem Dokument mit einem LIDO-Datensatz:

<lido:lido>[Inhalt des Datensatzes]</lido:lido>

Wurzelelement <lido:lidoWrap> in einem Dokument mit mehreren LIDO-Datensätzen:

<lido:lidoWrap>
    <lido:lido>[Inhalt des ersten Datensatzes]</lido:lido>
    <lido:lido>[Inhalt des zweiten Datensatzes]</lido:lido>
    <lido:lido>[Inhalt des dritten Datensatzes]</lido:lido>
</lido:lidoWrap>

Elemente und Attribute

Das Wurzelelement (root element) kann weitere Elemente (Struktureinheiten) enthalten. Elemente können Text oder weitere Unterelemente enthalten. Elemente können Attribute besitzen. Über Attribute können Elementen Eigenschaften zugewiesen werden.

Im unten folgenden Beispiel zur Angabe eines Werktitels sieht man das LIDO-Element <lido:titleSet> mit dem Unterelement <lido:appellationValue>.

Elemente bestehen aus einem sog. "start tag", hier <lido:titleSet>, einem sog. "end tag" erkennbar am Schrägstrich ("/"), hier </lido:titleSet>. Der Inhalt des Elements befindet sich zwischen start tag und end tag. Der Textinhalt des Unterelements <lido:appellationValue> ist hier im Beispiel "La Primavera".

Das Element <lido:appellationValue> enthält ein Attribut ,@xml:lang mit der Sprachangabe "it" für "Italienisch". Das Zeichen "@" wird hier im erklärenden Text nur verwendet, um sichtbar zu machen, dass es sich um ein Attribut handelt, im XML-Dokument wird es nicht verwendet, wie man im folgenden Beispiel sieht.

<lido:titleSet>
    <lido:appellationValue xml:lang="it">La Primavera</lido:appellationValue>
</lido:titleSet>

Will man den Werktitel zusätzlich in deutscher Sprache angeben, sieht das Beispiel so aus:

<lido:titleSet>
    <lido:appellationValue xml:lang="it">La Primavera</lido:appellationValue>
    <lido:appellationValue xml:lang="de">Der Frühling</lido:appellationValue>
</lido:titleSet>

Weitere Informationen zu Elementen und Attributen s. Modul "LIDO Dokumentstruktur, Elementtypen, Attribute".

Schema

LIDO ist als XML-Schema definiert. Die jeweils aktuelle ("latest") Definitionsdatei (XML Schema Definition/XSD) ist unter https://lido-schema.org/schema/latest/lido.xsd zu finden. Darin werden die LIDO-Elemente und LIDO-Attribute definiert und es wird festgelegt, in welcher Reihenfolge sie in einem LIDO-Dokument vorkommen können bzw. müssen.

Die Schema-Datei der LIDO-Version v1.1 (http://www.lido-schema.org/schema/v1.1/lido-v1.1.xsd) wird im folgenden Beispiel über das Wurzelelement <lido:lidoWrap> in das XML-Dokument eingebunden:

<?xml version="1.0" encoding="UTF-8"?>
<lido:lidoWrap 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://www.lido-schema.org"
    xmlns:lido="http://www.lido-schema.org" 
    xsi:schemaLocation="http://www.lido-schema.org http://www.lido-schema.org/schema/v1.1/lido-v1.1.xsd">
    [...]
</lido:lidoWrap>

Validität

Ein XML-Dokument ist valide (gültig), wenn es den in der Schema-Datei festgelegten Regeln entspricht.

Wenn ein XML-Dokument nicht valide ist, kann es zu Problemen bei der Verarbeitung des Dokuments kommen. So kann es beispielsweise sein, dass ein Programm das Dokument nicht lesen oder verarbeiten kann, oder dass die Daten im Dokument falsch interpretiert werden.

Um die Validität (Gültigkeit) eines XML-Dokuments zu überprüfen, kann man ein XML-Validierungstool verwenden. Ein XML-Validierungstool vergleicht das XML-Dokument mit der Schema-Datei und gibt an, ob das Dokument valide ist oder nicht. XML-Editoren enthalten üblicherweise auch eine Validierungsmöglichkeit. Sollte das Dokument nicht valide sein, also den im LIDO Schema festgelegten Regeln nicht vollständig entsprechen, bekommt man bei der Validierung zeilengenau angezeigt, wo sich Fehler befinden.

Kardinalität

Die Elementdefinitionen in der Schemadatei enthalten auch Angaben dazu, wie oft ein Element an einer Stelle im Dokument vorkommen kann:

  • 1 = Pflichtelement,
  • 0-1 = das Element kann einmal vorkommen oder gar nicht vorkommen,
  • 0-unbounded = das Element kann beliebig oft an dieser Stelle wiederholt werden oder es kann gar nicht enthalten sein.

Modularität

LIDO nutzt für die Definition von Elementen ausgiebig das Element <xs:complexType> aus der XML Schema Language und ist somit sehr modular aufgebaut. Z. B. liegt dem LIDO-Element <lido:place> das Element <lido:placeComplexType> zugrunde. Dieses Element enthält Unterelemente, die wiederum unter Nutzung von <xs:complexType> definiert wurden. Das Element <lido:place> kann an verschiedenen Stellen in einem LIDO-Element vorkommen, etwa für eine Ortsangabe bei der Beschreibung von Ereignissen aus der Objektgeschichte unterhalb von <lido:eventWrap> oder bei der Beschreibung von auf dem Objekt abgebildeten Orten unterhalb von <lido:subjectWrap> (s. LIDO-Element <lido:place> in der LIDO Documentation).

Namensräume

Die Elemente und Attribute, die im LIDO Schema definiert werden, haben den Namensraum "lido". Der Namensraum wird Elementnamen und Attributen mit einem Doppelpunkt (":") vorangestellt. Das Element <lido:recordType> zur Angabe eines Datensatztyps (z. B. "Einzelobjekt" oder "Objektgruppe") hat als Namensraum "lido" und als Elementnamen "recordType". Das Attribut @lido:type hat als Namensraum "lido" und als Attributnamen "type". Das Attribut @xml:lang hat als Namensraum "xml" und als Attributnamen "lang". Das Attribut @xml:lang wird nicht in der LIDO Schema Datei definiert, sondern gehört zur "Grundausstattung" von XML. LIDO-Dokumente können Elemente aus weiteren Namensräumen enthalten (wie skos, gml, owl, s. Modul "Dokumentstruktur, Elementtypen, Attribute").

Kommentare

LIDO-XML-Beispiele können Erläuterungen in Form von Kommentaren enthalten. Kommentare werden bei der Weiterverarbeitung von LIDO-Daten üblicherweise nicht ausgewertet.

<!-- einzeiliger Kommentar -->

<!-- 
mehrzeiliger
Kommentar
//-->

Aufgaben

XML-Grundlagen für LIDO

  1. Vertiefung: Bitte öffnen Sie den LIDO-Beispieldatensatz "La Primavera Pflichtelemente ohne kontrolliertes Vokabular" in Ihrem Browser und machen Sie sich mit der Struktur einer XML-Datei vertraut.
  2. Vertiefung: Falls für Sie zutreffend: Bitte klären Sie, ob Ihre Erfassungsdatenbank über einen XML-Export verfügt. Falls möglich, exportieren Sie einen Testdatensatz nach XML und sehen Sie ihn sich in Ihrem Browser oder in einem Editor an.
  3. Hands-on:
    • Bitte installieren Sie einen XML-Editor Ihrer Wahl. Informationen dazu finden Sie unter "Aufgaben".
    • Bitte erstellen Sie mit Ihrem XML-Editor/Editor ein XML-Dokument mit der unten folgenden Struktur. Diese Struktur ist nicht LIDO, sondern nur ein einfaches XML-Beispiel! Bitte speichern Sie das Dokument unter dem Dateinamen "Beispielobjekt.xml".
    • Bitte ersetzen Sie die Elementinhalte (Platzhalter) in der Datei mit den Informationen zu Ihrem Beispielobjekt, die Sie in der Hands-on-Aufgabe in Modul 1 zusammengestellt haben. Elemente, die Sie nicht benötigen, können Sie löschen. Elemente, die Sie mehrfach benötigen, können Sie kopieren. Bitte speichern Sie die Änderungen an Ihrem Dokument.

Einfache XML-Struktur für Ihre Objektinformationen (das ist nicht LIDO-XML):

<?xml version="1.0" encoding="UTF-8"?>
<beispielobjekt>
    <objekt>
        <name>Objekttitel/Objektname</name>
        <typ xml:lang="de">Objekttyp deutsch</typ>
        <typ xml:lang="en">Objekttyp englisch</typ>
        <ereignis>
            <typ>Herstellung</typ>
            <person>Beteiligte Person</person>
            <person>Beteiligte Person</person>
            <institution>Beteiligte Institution</institution>
            <ort>Herstellungsort</ort>
            <datum>Datierung</datum>
        </ereignis>
        <material-technik>Angaben zu Material und Technik</material-technik>
        <masse>Maßangaben</masse>
        <schlagwort>Thema bzw. Bildinhalt</schlagwort>
        <schlagwort>Thema bzw. Bildinhalt</schlagwort>
        <institution>Bewahrende Institution</institution>
        <rechte>Rechte am Objekt</rechte>
    </objekt>
    <abbildungen>
        <abbildung>
            <link>Link zur Abbildung</link>
            <rechte>Rechte an der Abbildung</rechte>
        </abbildung>
    </abbildungen>
    <datensatz>
        <quelle>Quelle des Datensatzes</quelle>
        <link>Link zum Datensatz</link>
    </datensatz>
</beispielobjekt>

Beispiel: Peter Paul Rubens, Rubens und Isabella Brant in der Geißblattlaube, um 1609/10, Bayerische Staatsgemäldesammlungen – Alte Pinakothek München, URL: http://www.sammlung.pinakothek.de/de/artwork/o5xrMEr47X (Zuletzt aktualisiert am 28.08.2023).

<?xml version="1.0" encoding="UTF-8"?>
<beispielobjekt>
    <objekt>
        <name>Peter Paul Rubens, Rubens und Isabella Brant in der Geißblattlaube, um 1609/10</name>
        <typ xml:lang="de">[im Online-Datensatz nicht enthalten: Ölgemälde]</typ>
        <typ xml:lang="en">[im Online-Datensatz nicht enthalten: oil painting]</typ>
        <ereignis>
            <typ>Herstellung</typ>
            <person>Peter Paul Rubens (1577-1640)</person>
            <ort>[im Online-Datensatz nicht explizit enthalten: Antwerpen]</ort>
            <datum>um 1609/10</datum>
        </ereignis>
        <material-technik>Leinwand, auf Holz übertragen</material-technik>
        <masse>178 x 136,5 cm</masse>
        <schlagwort>[den Angaben im Online-Datensatz entnommen: Rubens, Peter Paul]</schlagwort>
        <schlagwort>[den Angaben im Online-Datensatz entnommen: Rubens, Isabella]</schlagwort>
        <schlagwort>[den Angaben im Online-Datensatz entnommen: Ehe]</schlagwort>
        <schlagwort>[den Angaben im Online-Datensatz entnommen: Geißblatt]</schlagwort>
        <institution>Bayerische Staatsgemäldesammlungen - Alte Pinakothek München</institution>
        <rechte>[keine explizite Angabe im Online-Datensatz]</rechte>
    </objekt>
    <abbildungen>
        <abbildung>
            <link>https://res.cloudinary.com/tne/image/authenticated/s--kAZIN-Uj--/q_80/artworks/PETER-PAUL-RUBENS_RUBENS-UND-ISABELLA-BRANT-IN-DER-GEISSBLATTLAUBE_CC-BY-SA_BSTGS_334.jpg</link>
            <rechte>CC BY-SA 4.0; https://creativecommons.org/licenses/by-sa/4.0/</rechte>
        </abbildung>
    </abbildungen>
    <datensatz>
        <quelle>Bayerische Staatsgemäldesammlungen - Alte Pinakothek München</quelle>
        <link>http://www.sammlung.pinakothek.de/de/artwork/o5xrMEr47X</link>
    </datensatz>
</beispielobjekt>

Materialien zur Vertiefung