Version dev

# Schema-Validierung

Eine Besonderheit beim speedata Publisher ist, dass die Eingabesprache in XML formuliert ist. Im Vergleich zu anderen Programmiersprachen ist XML »geschwätzig«: Man muss für die Start-Tags auch immer Ende-Tags schreiben:

    <PlaceObject>
       ...
    </PlaceObject>

Im Vergleich zu einer C-ähnlichen Schreibweise wie

    placeObject(...)

ist das mehr Tipparbeit. Die Lösung für dieses »Problem« ist die Verwendung eines Texteditors, der gut mit XML umgehen kann. Die Eingabe eines Start-Tags würde beispielsweise sofort auch das Ende-Tag einfügen. Oder bei einer Änderung im Tagnamen würden sowohl Start-Tag als auch das Ende-Tag gleichzeitig geändert werden. Gute XML-Editoren bewirken noch viel mehr, als nur die erleichterte Eingabe von Tags, z.B. die Validierung des Codes gegen ein Schema.

## Was ist ein Schema?

In einem Schema (z. B. XML-Schema oder RELAX NG) stehen Informationen über den erlaubten Aufbau einer XML-Datei. So steht im Schema, das mit dem speedata Publisher mitgeliefert wird, beispielsweise:

- Das Wurzelelement muss `<Layout>` heißen
- Das Kindelement von `<PlaceObject>` muss entweder `<Barcode>`, `<Box>`, `<Circle>`, `<Frame>`, `<Image>`, `<Rule>`, `<Table>`, `<Textblock>` oder `<Transformation>` sein.
- Das Attribut `valign` in der Tabellenzeile darf eines der Werte `top`, `middle` oder `bottom` sein
- u.v.m.

Ebenso steht in dem mitgelieferten Schema die Dokumentation der einzelnen Befehle sowie die der Auwahlmöglichkeiten. Ein guter XML-Editor kann ein solches Schema einlesen und dem Anwender die Eingabe des Quelltextes erheblich erleichtern. Die Eingabe mit einem guten Schema mach viel Spaß und hat einige Vorteile gegenüber dem klassischen Texteditor:

- Syntaxfehler werden sofort angezeigt
- Befehle (Tags) müssen nicht vollständig eingegeben werden, weil der Editor eine Autovervollständigung bietet
- Die Attribute werden sofort auf sinnvolle Werte überprüft
- Dokumentation steht direkt im Editor bereit

... im Prinzip das, was man von einer integrierten Entwicklungsumgebung (IDE) erwartet.

## Geeignete Editoren

Um das Schema zu nutzen, braucht man einen XML-Editor, der RELAX NG oder XML Schema (XSD) verarbeiten kann, zum Beispiel:

- OxygenXML (Mac, Windows, Linux)
- Visual Studio Code (Mac, Windows, Linux, kostenlos)
- XMLSpy (Windows)
- XML Blueprint (Windows)
- GNU Emacs mit nxml-mode (alle Betriebssysteme, kostenlos)
- jEdit (Mac, Windows, Linux, kostenlos)

## Einbinden der Schemata

Die Schemadateien liegen in der ZIP-Datei im Verzeichnis `share/schema/` unter den Dateinamen

    layoutschema-de.rng
    layoutschema-en.rng

für RELAX NG und

    layoutschema-de.xsd
    layoutschema-en.xsd

für XSD, je nach gewünschter Sprache der Dokumentation.

Wie das Schema eingebunden wird, ist abhängig vom Editor. Für verschiedene Editoren (oXygen XML Editor bzw. Visual Studio Code) gibt es Schritt-für-Schritt-Anleitungen.

#### Inhalt