So lässt sich ein fehlendes XML-Schema selbst generieren

Der erste Schritt ist die Erstellung einer Variablen mit einer eindeutigen, durch Komma begrenzten Liste aller Elemente im XML-Dokument. Dies erfolgt mithilfe der Code-Ausschnitte in Liste C. Hier werden die xsl:key-Elemente dazu verwendet, Indexe von Elementen nach Namen und von Attributen nach Namen zu erstellen.

Diese Indexe werden dann in Verbindung mit den Funktionen generate-id() und key() verwendet, um eine Gruppierung nach der Muench’schen Methode durchzuführen und eindeutige Werte sicherzustellen. Mit der Funktion substring() wird das Komma am Ende entfernt.

Liste C

Endeutige Elemente und Attribute

Die durch Komma begrenzte Elementliste wird dann zur Erstellung individueller xs:element-Definitionen verwendet, die in die folgenden möglichen Kategorien fallen können:

  • Das Element hat keine untergeordneten Elemente oder Attribute.
  • Das Element hat keine untergeordneten Elemente, aber Attribute.
  • Das Element hat untergeordnete Elemente, aber keine Attribute.
  • Das Element hat sowohl untergeordnete Elemente als auch Attribute.
  • Um festzustellen, ob ein Element entweder untergeordnete Elemente oder Attribute besitzt, ist ein anderer als der oben beschriebene Ansatz erforderlich. Der Grund dafür ist, dass nach spezifischen Elementen und Attributen gesucht wird, nämlich jenen, die mit einem bestimmten Parent-Element verbunden sind. Zuerst wird aus allen untergeordneten Elementen mit Parent-Element, dessen Name mit dem aktuellen Element übereinstimmt, eine sortierte Elementliste erstellt. Duplikate werden ebenso entfernt wie das hängende Komma, und es entsteht eine eindeutige Liste mit untergeordneten Elementen. Das Verfahren ist für Attribute grundlegend dasselbe.

    Der Code für die gesamte Prozedur zur Generierung eines W3C-Schemas ist in Liste D enthalten, ein Muster-XML-Dokument befindet sich in Liste E und das Schema in Liste F.

    Liste D

    XSL zur Erstellung eines W3C-Schemas

    Liste E

    Muster-XML-Dokument

    Liste F

    Schema

    Es dauert etwa einen Tag diesen Code zu schreiben, aber wenn man bedenkt, wie aufwändig es ist, ein Schema per Hand zu schreiben, ist es die Mühe wert. Das resultierende Schema ist zwar nicht sonderlich angepasst (jeder Datentyp ist xs:string und minOccurs ist immer 0), doch es geht in jedem Fall sehr viel schneller, ein bestehendes Schema anzupassen als ein neues zu schreiben.

    Page: 1 2

    ZDNet.de Redaktion

    Recent Posts

    Das sind die besten Cybersicherheits-Anbieter Deutschlands

    KI und Nachholbedarf des Mittelstands treiben die Nachfrage nach End-to-End-Services. SOC-Dienstleister profitieren besonders stark.

    3 Tagen ago

    Wearables etablieren sich als Trendmarkt

    Bereits ein Drittel der Deutschen nutzt eine Smartwatch. 70 Prozent zeigen sich offen für weitere…

    3 Tagen ago

    Sicherheitslücke: Yubico-Sicherheitsschlüssel anfällig für Cloning

    Der eigentliche Fehler steckt in einem Sicherheitschip von Infineon. Angreifbare YubiKeys von Yubico lassen sich…

    3 Tagen ago

    Google gibt Final von Android 15 für Entwickler frei

    Der Quellcode steht dem Android Open Source Project zur Verfügung. Pixel-Smartphones und Geräte von Drittanbietern…

    3 Tagen ago

    Daten sicher auf optischen Speichermedien verschlüsseln

    EncryptDisc Creator ermöglicht es auf einfache Weise, Daten sicher verschlüsselt auf handelsüblichen optischen Medien wie…

    3 Tagen ago

    Google schließt Zero-Day-Lücke in Android

    Betroffen sind Android 12, 12L, 13 und 14. Ein Angreifer kann unter Umständen höhere Rechte…

    4 Tagen ago