XML - Schemata

XML-Schema ist allgemein bekannt als XML Schema Definition (XSD). Es wird verwendet, um die Struktur und den Inhalt von XML-Daten zu beschreiben und zu validieren. Das XML-Schema definiert die Elemente, Attribute und Datentypen. Das Schemaelement unterstützt Namespaces. Es ähnelt einem Datenbankschema, das die Daten in einer Datenbank beschreibt.

Syntax

Sie müssen ein Schema in Ihrem XML-Dokument wie folgt deklarieren:

Beispiel

Das folgende Beispiel zeigt die Verwendung des Schemas -

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = "contact">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "name" type = "xs:string" />
            <xs:element name = "company" type = "xs:string" />
            <xs:element name = "phone" type = "xs:int" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

Die Grundidee hinter XML-Schemas besteht darin, dass sie das legitime Format beschreiben, das ein XML-Dokument annehmen kann.

Elemente

Wie wir im Kapitel XML - Elemente gesehen haben , sind Elemente die Bausteine ​​des XML-Dokuments. Ein Element kann innerhalb einer XSD wie folgt definiert werden:

<xs:element name = "x" type = "y"/>

Definitionstypen

Sie können XML-Schemaelemente folgendermaßen definieren:

Einfacher Typ

Ein einfaches Typelement wird nur im Kontext des Textes verwendet. Einige der vordefinierten einfachen Typen sind: xs: Ganzzahl, xs: Boolescher Wert, xs: Zeichenfolge, xs: Datum. Zum Beispiel -

<xs:element name = "phone_number" type = "xs:int" />

Komplexer Typ

Ein komplexer Typ ist ein Container für andere Elementdefinitionen. Auf diese Weise können Sie angeben, welche untergeordneten Elemente ein Element enthalten kann, und eine Struktur in Ihren XML-Dokumenten bereitstellen. Zum Beispiel -

<xs:element name = "Address">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
         <xs:element name = "phone" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Im obigen Beispiel besteht das Adresselement aus untergeordneten Elementen. Dies ist ein Container für andere<xs:element> Definitionen, mit denen eine einfache Hierarchie von Elementen im XML-Dokument erstellt werden kann.

Globale Typen

Mit dem globalen Typ können Sie einen einzelnen Typ in Ihrem Dokument definieren, der von allen anderen Referenzen verwendet werden kann. Angenommen, Sie möchten die Person und das Unternehmen für verschiedene Adressen des Unternehmens verallgemeinern . In diesem Fall können Sie einen allgemeinen Typ wie folgt definieren:

<xs:element name = "AddressType">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Verwenden wir diesen Typ nun in unserem Beispiel wie folgt:

<xs:element name = "Address1">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone1" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

<xs:element name = "Address2">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone2" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Anstatt den Namen und das Unternehmen zweimal definieren zu müssen (einmal für Adresse1 und einmal für Adresse2 ), haben wir jetzt eine einzige Definition. Dies vereinfacht die Wartung, dh wenn Sie der Adresse "Postleitzahl" -Elemente hinzufügen möchten, müssen Sie diese nur an einer Stelle hinzufügen.

Attribute

Attribute in XSD bieten zusätzliche Informationen innerhalb eines Elements. Attribute haben Namen und Typ wie unten gezeigt -

<xs:attribute name = "x" type = "y"/>