Aktuelle Remote-Seminare mit Durchführungsgarantie: Etwas Werbung in eigener Sache Termine: 03.08.-05.08.2020, 21.09.-23.09.2020, 23.11.-25.11.2020, 07.12.-09.12.2020, 22.03.-24.03.2021, 07.06.-09.06.2021, 06.09.-08.09.2021XML Einführung und Grundlagen Termine: 06.08.2020, 20.10.2020, 13.11.2020, 10.12.2020, 25.03.2021, 10.06.2021, 09.09.2021XML - der professionelle Überblick Termine: 23.11.-26.11.2020, 29.03.-01.04.2021Einstieg in die Programmierung Termine: 17.08.-19.08.2020, 14.12.-16.12.2020, 07.04.-09.04.2021XML, XSLT, XPath, XSL-FO Einführung Termine: Termin nach WunschEinstieg in C#.NET Termine: 21.09.-23.09.2020, 11.01.-13.01.2021, 26.05.-28.05.2021, 27.09.-29.09.2021VB.NET für Visual Basic-Programmierer Termine: 21.10.-23.10.2020, 14.12.-16.12.2020, 08.03.-10.03.2021, 19.07.-21.07.2021, 23.08.-25.08.2021XML Grundlagen, XSL-FO, SVG, DocBook, DITA Termine: Termin nach WunschJava Grundlagen Termine: 03.08.-06.08.2020, 30.11.-03.12.2020, 29.03.-01.04.2021C++ für Programmiereinsteiger Termine: 10.09.2020, 11.12.2020, 16.03.2021Neues Seminar: XProc Grundlagen Termine: 21.09.-25.09.2020, 01.03.-05.03.2021Java/JSP/HTML/JDBC/XML Komplett Termine: 07.09.-09.09.2020, 21.10.-23.10.2020, 23.11.-25.11.2020, 25.01.-27.01.2021, 12.04.-14.04.2021, 26.07.-28.07.2021Python für Programmiereinsteiger Last-Minute-Seminare, noch freie Plätze XML Einführung und Grundlagen03.08.-05.08.2020 XML, XSLT, XPath, XSL-FO Einführung17.08.-19.08.2020 Python für Programmiereinsteiger07.09.-09.09.2020

XPROC * XSL-FO * SVG * XML * XML-SCHEMA * XPATH * XSL * XSLT 1.0 * XSLT 2.0 * XSLT 3.0 * XQUERY * ANT



XML-Schema / XML-Schema-Beispiel: Buecher

XML-Schema-Beispiel: Buecher

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:

ST.xsd


<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>

Autor.xsd

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>

Verlag.xsd

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 &amp; 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>

Y.xsd


<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>

Buecher.xsd

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.




NVDL



Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/xsd_Namespaces_Buecher.html