Ein XSD-Beispiel
On September 29, 2021 by adminIn diesem Kapitel wird gezeigt, wie man ein XML-Schema schreibt. Sie werden auch lernen, dass ein Schema auf verschiedene Arten geschrieben werden kann.
Ein XML-Dokument
Schauen wir uns dieses XML-Dokument namens „shiporder.xml“:
Erstellen eines XML-Schemas
Nun wollen wir ein Schema für das obige XML-Dokument erstellen.
Wir beginnen damit, eine neue Datei zu öffnen, die wir „shiporder.xsd“ nennen werden. Um das Schema zu erstellen, könnten wir einfach der Struktur des XML-Dokuments folgen und jedes Element so definieren, wie wir es finden. Wir beginnen mit der Standard-XML-Deklaration, gefolgt von dem xs:schema-Element, das ein Schema definiert:
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema“>
…
</xs:schema>
In dem obigen Schema verwenden wir den Standard-Namensraum (xs), und der mit diesem Namensraum verbundene URI ist die Schema-Sprachdefinition, die den Standardwert http://www.w3.org/2001/XMLSchema hat.
Als nächstes müssen wir das Element „shiporder“ definieren. Dieses Element hat ein Attribut und enthält andere Elemente, daher betrachten wir es als einen komplexen Typ. Die Kindelemente des „shiporder“-Elements sind von einem xs:sequence-Element umgeben, das eine geordnete Folge von Unterelementen definiert:
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>
Dann müssen wir das Element „orderperson“ als einfachen Typ definieren (weil es keine Attribute oder andere Elemente enthält). Dem Typ (xs:string) ist das mit XML Schema assoziierte Namespace-Präfix vorangestellt, das einen vordefinierten Schema-Datentyp angibt:
Als Nächstes müssen wir zwei Elemente definieren, die vom komplexen Typ sind: „shipto“ und „item“. Wir beginnen mit der Definition des Elements „shipto“:
Mit Schemata können wir die Anzahl der möglichen Vorkommen für ein Element mit den Attributen maxOccurs und minOccurs definieren. maxOccurs gibt die maximale Anzahl der Vorkommen für ein Element an und minOccurs die minimale Anzahl der Vorkommen für ein Element. Der Standardwert für maxOccurs und minOccurs ist 1!
Nun können wir das Element „item“ definieren. Dieses Element kann mehrfach innerhalb eines „shiporder“-Elements erscheinen. Dies wird durch die Einstellung des Attributs maxOccurs des Elements „item“ auf „unbounded“ festgelegt, was bedeutet, dass das Element „item“ so oft vorkommen kann, wie der Autor es wünscht. Beachten Sie, dass das „note“-Element optional ist. Wir haben dies festgelegt, indem wir das Attribut minOccurs auf Null gesetzt haben:
Wir können nun das Attribut des Elements „shiporder“ deklarieren. Da es sich um ein erforderliches Attribut handelt, geben wir use=“required“ an.
Hinweis: Die Attributdeklarationen müssen immer an letzter Stelle stehen:
Hier ist das komplette Listing der Schemadatei „shiporder.xsd“:
Das Schema aufteilen
Die vorherige Entwurfsmethode ist sehr einfach, kann aber schwierig zu lesen und zu pflegen sein, wenn die Dokumente komplex sind.
Die nächste Entwurfsmethode basiert darauf, alle Elemente und Attribute zuerst zu definieren und dann mit dem ref-Attribut auf sie zu verweisen.
Hier ist der neue Entwurf der Schemadatei („shiporder.xsd“):
Verwendung von benannten Typen
Die dritte Entwurfsmethode definiert Klassen oder Typen, die es uns ermöglichen, Elementdefinitionen wiederzuverwenden. Dies geschieht durch die Benennung der simpleTypes- und complexTypes-Elemente, auf die dann über das type-Attribut des Elements verwiesen wird.
Hier ist der dritte Entwurf der Schemadatei („shiporder.xsd“):
Das restriction-Element zeigt an, dass der Datentyp von einem W3C XML Schema-Namensraum-Datentyp abgeleitet ist. Das folgende Fragment bedeutet also, dass der Wert des Elements oder Attributs ein String-Wert sein muss:
Das restriction-Element wird häufiger verwendet, um Einschränkungen auf Elemente anzuwenden. Betrachten Sie die folgenden Zeilen aus dem obigen Schema:
<xs:restriction base=“xs:string“>
<xs:pattern value=“{6}“/>
</xs:restriction>
</xs:simpleType>
Dies zeigt an, dass der Wert des Elements oder Attributs eine Zeichenkette sein muss, die aus genau sechs Zeichen in einer Reihe bestehen muss, und diese Zeichen müssen eine Zahl von 0 bis 9 sein.
Schreibe einen Kommentar