• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

Das Schemadokument

Die Definitionen eines Schemas werden in einem XML-Dokument zusammengefasst, dessen Wurzelelement den Namen schema hat. In diesem Wurzelelement finden sich neben Definitionen von Namensraumpräfixen noch einige Attribute, die grundlegende Eigenschaften des Schemas festlegen:

  • targetNamespace
    Dieses Attribut gibt an, für welchen Namensraum das jeweilige Schema Definitionen enthält. In jedem Schema kann es Definitionen für höchstens einen Namensraum geben (fehlt das Attribut targetNamespace, so gehören die Definitionen des Schemas keinem Namensraum an). Um ein Schema für Dokumente zu definieren, die Elemente oder Attribute aus mehreren Namensräumen enthalten, gibt es neben den bereits eingeführten Wildcards auch die Möglichkeit des Schemaimports, auf den wir später eingehen.
  • elementFormDefault und attributeFormDefault
    Diese Attribute legen fest, ob lokal definierte Elemente oder Attribute dem Namensraum des Schemas angehören (qualified) oder keinem Namensraum angehören (unqualified). Dies kann durch das form-Attribut in der einzelnen Element- oder Attributdefinition überschrieben werden. Global definierte Attribute oder Elemente gehören immer dem Namensraum des Schemas an.
  • blockDefault
    Dieses Attribut kann verwendet werden, um die Vorbelegung für das block-Attribut anzugeben.

Ein sehr einfaches Schema sieht demnach wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
blockDefault="extension"
targetNamespace="http://www.xquery-buch.de/Beispiel">
<xs:element name="Artikel">
<xs:complexType>
<xs:sequence>
<xs:element name="Nummer" type="xs:string"/>
<xs:element name="Beschreibung" type="xs:string"/>
<xs:element name="Einzelpreis" type="xs:decimal"
default="1.00"/>
</xs:sequence>
<xs:attribute name="ID" type="xs:ID" use="required"/>
<xs:attribute name="Medikament" type="xs:boolean"
default="false"/>
</xs:complexType>
</xs:element>
</xs:schema>

XML-Schemata können aus mehreren Schemadokumenten zusammengesetzt werden. Über ein include-Element können Schemadokumente eingefügt werden, die Deklarationen zu demselben Namensraum oder ohne Namensraumbindung enthalten. Schemadokumente, die einem anderen Namensraum angehören, können über import hinzugenommen werden. Dann ist es möglich, aus Definitionen auch auf Elemente, Attribute, Typen etc. Bezug zu nehmen, die in diesem anderen Namensraum definiert sind. Das folgende import-Element, das als direktes Kind des schema-Elementes auftreten muss, macht das XLink-Schema zugänglich:

<xs:import namespace="http://www.w3.org/1999/xlink"
schemaLocation="xlink.xsd"/>

Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)

<< zurückvor >>