XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XML-Schema / XML-Schema: Verschiedene Designs / XML-Schema-Beispiel: Buecher
![]() |
![]() |
➪ Auf dieser Seite finden Sie ein Beispiel für XML-Schemata mit diversen Namespaces, die sich gegenseitig importieren bzw. includieren.
Auf dieser Seite:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="wilfried-grupe.de/someSimpleTypes"
xmlns:myST="wilfried-grupe.de/someSimpleTypes">
<xs:simpleType name="stringmax20">
<xs:restriction base="xs:string">
<xs:pattern value="[A-ZÄÖÜ][a-zäöüß]{1,19}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Jahreszahl">
<xs:restriction base="xs:int">
<xs:pattern value="[0-9]{4}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Hier wird der Namespace "wilfried-grupe.de/someSimpleTypes" importiert und mit den Prefixes "ST", "st1" und "st2" deklariert.
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="wilfried-grupe.de/Autor"
xmlns:a="wilfried-grupe.de/Autor"
elementFormDefault="qualified"
xmlns:st="wilfried-grupe.de/someSimpleTypes"
xmlns:st1="wilfried-grupe.de/someSimpleTypes"
xmlns:st2="wilfried-grupe.de/someSimpleTypes">
<xs:import namespace="wilfried-grupe.de/someSimpleTypes"
schemaLocation="ST.xsd"/>
<xs:element name="Autor">
<xs:complexType>
<xs:sequence>
<!--<xs:element ref="a:NN"/>-->
<xs:element name="NN" type="st:stringmax20"></xs:element>
<xs:element ref="a:VN"/>
<xs:element ref="a:Geburtsjahr"/>
<xs:element minOccurs="0" ref="a:Todesjahr"/>
<xs:element ref="a:IstWeiblich"/>
</xs:sequence>
<xs:attribute name="version" type="xs:string"/>
</xs:complexType>
</xs:element>
<!--<xs:element name="NN" type="st:stringmax20"/>-->
<xs:element name="VN" type="st:stringmax20"/>
<xs:element name="Geburtsjahr" type="st:Jahreszahl"/>
<xs:element name="Todesjahr" type="st2:Jahreszahl"/>
<xs:element name="IstWeiblich" type="xs:boolean"/>
</xs:schema>
Auch hier wird der Namespace "wilfried-grupe.de/someSimpleTypes" importiert und mit dem Prefix "myST" deklariert.
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="wilfried-grupe.de/Verlag"
xmlns:v="wilfried-grupe.de/Verlag"
xmlns:myST="wilfried-grupe.de/someSimpleTypes">
<xs:import
namespace="wilfried-grupe.de/someSimpleTypes"
schemaLocation="ST.xsd"/>
<xs:element name="Verlag">
<xs:complexType>
<xs:sequence>
<xs:element ref="v:Verlagsname"/>
<xs:element ref="v:Rechtsform"/>
<xs:element ref="v:Webadresse"/>
<xs:choice>
<xs:element ref="v:Lieferanschrift"/>
<xs:element ref="v:Postanschrift"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Verlagsname" type="xs:string"/>
<xs:element name="Rechtsform">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="OHG"/>
<xs:enumeration value="GmbH"/>
<xs:enumeration value="GmbH & Co. KG"/>
<xs:enumeration value="AG"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Lieferanschrift">
<xs:complexType>
<xs:sequence>
<xs:element ref="v:Strasse"/>
<xs:element ref="v:PLZ"/>
<xs:element ref="v:Ort"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Postanschrift">
<xs:complexType>
<xs:sequence>
<xs:element ref="v:Postfach"/>
<xs:element ref="v:PLZ"/>
<xs:element ref="v:Ort"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Strasse" type="xs:string"/>
<xs:element name="PLZ">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{5}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Ort" type="myST:stringmax20"/>
<xs:element name="Postfach">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Webadresse" type="xs:string"/>
</xs:schema>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="wilfried-grupe.de/Buecher">
<xs:element name="Y" type="xs:string"></xs:element>
</xs:schema>
Der <xs:include schemaLocation="Y.xsd"/> gelingt nur, weil der dort verwendete targetNamespace derselbe ist. Da dieser Namespace mit dem Prefix "b" deklariert wurde, ist auch "b:Y" zu verwenden.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="wilfried-grupe.de/Buecher"
xmlns:a="wilfried-grupe.de/Autor"
xmlns:v="wilfried-grupe.de/Verlag"
xmlns:b="wilfried-grupe.de/Buecher">
<xs:include schemaLocation="Y.xsd"/>
<xs:import namespace="wilfried-grupe.de/Autor"
schemaLocation="Autor.xsd"/>
<xs:import namespace="wilfried-grupe.de/Verlag"
schemaLocation="Verlag.xsd"/>
<xs:element name="Buecher">
<xs:complexType>
<xs:sequence>
<xs:element ref="b:Buch" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Buch">
<xs:complexType>
<xs:sequence>
<xs:element ref="b:ISBN"/>
<xs:element ref="b:Titel"/>
<xs:element ref="v:Verlag"/>
<xs:element ref="a:Autor" maxOccurs="unbounded"/>
<xs:element ref="b:Preis"/>
<xs:element ref="b:Genre"/>
<xs:element ref="b:Y"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ISBN" type="xs:string"/>
<xs:element name="Titel" type="xs:string"/>
<xs:element name="Preis">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Genre">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Fachbuch"/>
<xs:enumeration value="Krimi"/>
<xs:enumeration value="Reiseroman"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
wg / 6. Juli 2019
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de