Schemavalidierung

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.

29 autocomplete1

Auswahl an erlaubten Kindelementen

29 autocomplete2

Erlaubte Attribute bei Textblock

Einbinden des RELAX NG-Schemas

Wie das Schema eingebunden wird, ist abhängig vom Editor. Für oXygen XML kann z. B. man in den Einstellungen eine neue Dokumenttypen-Zuordnung erstellen. Es muss festgelegt werden, für welchem Namensraum das Schema benutzt werden soll.

29 doczuordnung1

Verknüpfungsregeln in der oXygen XML-Konfiguration

Dann muss man noch definieren, welches Schema für diese Verknüpfungsregeln geladen werden soll. Das wird im zweiten Reiter der Einstellung festgelegt.

29 doczuordnung2

Als Schema RELAX NG + Schematron einstellen in der oXygen XML-Konfiguration

Ab sofort sollte zu jedem Layout im Namensraum

xmlns="urn:speedata.de:2009/publisher/en"

das Schema hinterlegt sein. Das erkennt man daran, dass nun bei Eingabe einer öffnenden spitzen Klammer (<) eine Auswahl der Befehle erscheint.

29 liste

Ist das Schema richtig eingebunden, dann erscheint eine Auswahlliste sobald man einen Befehl eingibt.