XML Schema - Elemente und AttributeXML Schema ist der Nachfolger von Document Type Definitions. In XML Schema gibt es einfache, und auch komplexe Elemente. Hier lernen Sie die verschiedenen Elemente kennen und Attribute definieren.

XML Schema unterscheidet in normalen XML Dokumenten zwischen zwei Arten von Elementen, einfache und komplexe. Ein komplexes Element hat mehrere untergeordnete Elemente, sie sind also mehrfach verschachtelt.

artikel_complex.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<artikel>
<titel>Der Titel</titel>
<teaser>Der Teaser</teaser>

<inhalt>Der Inhalt</inhalt>
</artikel>


Zum Vergleich ein einfaches Element:

artikel_simple.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<artikel>Der Artikel</artikel>


Nehmen wir als erstes Beispiel gleich mal das obige einfache Element "<artikel>". Das Schema für die Definition dieses Elementes sieht so aus:

artikel_simple.xsd


<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="artikel" type="xs:string"/>
</xs:schema>


Wie Sie sehen wird das Schema, wird das Schema mit der Definition des Namespaces begonnen. Der Tag <xs:schema></xs:schema> umschließt das komplette Schema. Darauf folgt auch schon die Definition des Elementes "artikel".

<xs:element name="artikel" type="xs:string"/>


Über das Attribut name="" wird der name des Elementes angegeben, welches angesprochen wird. Das Attribut type="" definiert den Datentyp, in dem Fall ist es ein String, also eine Zeichenkette.

In dem XML Dokument muss nun auf das Schema verwiesen werden. Es geschieht wie bereits im ersten Teil beschrieben auf die selbe Art und Weiße. Wichtig ist nur, das die Adresse zu dem Schema über xsi:noNamespaceSchemaLocation="artikel_simple.xsd" korrekt angegeben wird.

artikel_simple.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<artikel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="artikel_simple.xsd">
Der Artikel
</artikel>


Im Gegensatz dazu nun das Schema für das komplexe Element:

artikel_complex.xsd

<?xml version="1.0"encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="artikel">
    <xs:complexType>
       <xs:sequence>
         <xs:element name="titel" type="xs:string"/>
         <xs:element name="teaser" type="xs:string"/>
         <xs:element name="inhalt" type="xs:string"/>
       </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Eingeleitet wird das Element durch den fast gleichen Befehl <xs:element>. Im name="" Attribut steht der Name des Elementes.
Der nächste Befehl <xs:complexType> definiert, das es sich bei dem Element um ein komplexes Element handelt.

<xs:complexType>
</xs:complexType>

Die anderen Elemente werden als "einfache" Elemente definiert.
Diesen Elementen wird ein Datentyp angegeben, dieser gibt an, welche Daten in ihm gespeichert werden können. In unserem Beispiel sind es einfache Strings, also Zeichenketten. Der Datentyp lautet "xs:string".

<xs:sequence>

 <xs:element name="titel" type="xs:string"/>
 <xs:element name="teaser" type="xs:string"/>
 <xs:element name="inhalt" type="xs:string"/>
</xs:sequence>

Nun muss noch auf das Schema in dem XML Dokument verwiesen werden. Das funktioniert auf die gleiche Art, wie bei einfachen Elementen.

artikel_complex.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<artikel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="artikel_complex.xsd">
<titel>Der Titel</titel>
<teaser>Der Teaser</teaser>

<inhalt>Der Inhalt</inhalt>
</artikel>



Attribute in XML Schema

In XML Schema wird angenommen, das alle Elemente mit Attributen komplexe Elemente sind. Einfache Elemente können also keine Attribute besitzen.
Ein Attribut wird wie ein einfaches Element definiert. Hierzu dient der XML Schema Befehl <xs:attribute />. Bei folgendem Schema wird dieses XML Dokument definiert:

artikel.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<artikel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="artikel_schema.xsd" nr="202">
<titel>Der Titel</titel>
<teaser>Der Teaser</teaser>
<inhalt>Der Artikel selbst</inhalt>
</artikel>


Hinweis: In dem XML Dokument wird bereits auf das XML Schema verwiesen.

artikel_schema.xsd
<?xml version="1.0"encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="artikel">
    <xs:complexType>
       <xs:sequence>
         <xs:element name="titel" type="xs:string"/>
         <xs:element name="teaser" type="xs:string"/>
         <xs:element name="inhalt" type="xs:string"/>
       </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
</xs:schema>


Das Attribut wird, wie Sie sehen außerhalb des <xs:sequence> Befehls definiert, aber natürlich innerhalb des <xs:complexType> Elementes, da wie oben bereits erwähnt worden war, nur komplexe Elemente mit Attributen ausgestattet werden können. Attribute können natürlich auch alle Datentypen beinhalten wie normale Elemente.

Wie in DTDs können Sie auch in XML Schema den Attributen noch einige Eigenschaften geben.

<xs:attribute name="nr" type="xs:integer" default="0" />
Bei dieser Definition wird ein default Wert angegeben. Dieser wird verwendet, wenn das Element z.B. nicht gesetzt ist.

<xs:attribute name="nr" type="xs:integer" fixed="10" />
Bei dieser Definition des Attributes wird ein fester Wert angegeben. D.h. es kann kein anderer Wert angegeben werden.

<xs:attribute name="nr" type="xs:integer" use="optional" />
Dieses Attribut ist Optional, d.h. es muss nicht angegeben werden.

<xs:attribute name="nr" type="xs:integer" use="required" />
Dieses Attribut muss gesetzt werden, damit das Element, und das ganze Dokument gültig ist.

XML Schema hat die gleichen Möglichkeiten wie auch DTDs. XML Schema kann jedoch in vielen Dingen noch komplexer als DTDs sein. Es lohnt sich nur noch mit XML Schema zu arbeiten.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: