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

    Bedrohungen in Europa: Schwachstellen in der Lieferkette dominieren

    Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…

    6 Tagen ago

    Bericht: Apple arbeitet an faltbarem iPad

    Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…

    6 Tagen ago

    HPE baut Supercomputer am Leibniz-Rechenzentrum

    Das System basiert auf Hardware von HPE-Cray und Nvidia. Die Inbetriebnahme erfolgt 2027.

    7 Tagen ago

    Bund meldet Fortschritte in der Netzversorgung

    Die Bundesnetzagentur hat ihr Gigabit-Grundbuch aktualisiert. Drei von vier Haushalten sollen jetzt Zugang zu Breitbandanschlüssen…

    7 Tagen ago

    Vorinstallierte Schadsoftware auf IoT-Geräten

    Mit dem Internet verbundene Digitale Bilderrahmen oder Mediaplayer können mit Schadsoftware infiziert werden und sind…

    1 Woche ago

    iOS und iPadOS 18.2 beseitigen 21 Sicherheitslücken

    Schädliche Apps können unter Umständen einen Systemabsturz auslösen. Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung.

    1 Woche ago