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.

    Themenseiten: Anwendungsentwicklung, Software, XML

    Fanden Sie diesen Artikel nützlich?
    Content Loading ...
    Whitepaper

    Artikel empfehlen:

    Neueste Kommentare 

    Noch keine Kommentare zu So lässt sich ein fehlendes XML-Schema selbst generieren

    Kommentar hinzufügen

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *