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 / xs:element name

xs:element name

xs:element name

xs:element name definiert den Namen eines XML-Elements. Der interne Aufbau, eventuelle Datentypen, Attribute und Childnodes können an verschiedenen Stellen präzisiert werden.

Es gibt verschiedene Design-Alternativen für XML-Schema. Die einfachste dürfte das der "russischen Puppe" sein:


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"  
  elementFormDefault="qualified" 
  attributeFormDefault="unqualified">
  <xs:element name="Persons">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Person" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Lastname">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                    <xs:pattern value="[A-Z][a-z]{1,19}"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Firstname" 
                maxOccurs="unbounded">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                    <xs:pattern value="[A-Z][a-z]{1,19}"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>              
            </xs:sequence>
            <xs:attribute name="Age" 
              type="xs:nonNegativeInteger" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Dieses XML-Schema definiert beispielsweise die Struktur für das folgende XML-Dokument.


<?xml version="1.0" encoding="UTF-8"?>
<Persons>
    <Person Age="50">
        <Lastname>Aa</Lastname>
        <Firstname>Aa</Firstname>
        <Firstname>Aa</Firstname>
    </Person>    
</Persons>
Vorteil Für jedes XML-Element ist die Beziehung zu seinen -, -, -, - Nodes auch ohne speziellen Editor klar erkennbar.
Nachteil Bei wiederholtem Auftreten derselben Elemente in verschiedenen Verzweigungen sind Mehrfachdeklarationen unausweichlich. Das Design eignet sich nicht bei rekursiver Elementdeklaration.

Kommt ein targetNamespace ins Spiel, so hängt das XML-Beispieldokument von ab.


<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wg="https://www.wilfried-grupe.de"
    targetNamespace="https://www.wilfried-grupe.de"
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified">
...
</xs:schema>

In diesem Fall (elementFormDefault="qualified", attributeFormDefault="unqualified") sieht das XML-Beispieldokument so aus:


<Persons xmlns="https://www.wilfried-grupe.de">
    <Person Age="50">
        <Lastname>Aa</Lastname>
        <Firstname>Aa</Firstname>
    </Person>
</Persons>

oder auch:


<wg:Persons 
    xmlns:wg="https://www.wilfried-grupe.de">
    <wg:Person Age="50">
        <wg:Lastname>Aa</wg:Lastname>        
        <wg:Firstname>Aa</wg:Firstname>
    </wg:Person>
</wg:Persons>

Im Fall (elementFormDefault="unqualified", attributeFormDefault="unqualified") sieht das XML-Beispieldokument dagegen so aus:


<wg:Persons xmlns:wg="https://www.wilfried-grupe.de">
    <Person Age="50">
        <Lastname>Aa</Lastname>        
        <Firstname>Aa</Firstname>
    </Person>
</wg:Persons>

oder mit DefaultNamespace:


<Persons xmlns="https://www.wilfried-grupe.de">
    <Person xmlns="" Age="50">
        <Lastname xmlns="">Aa</Lastname>        
        <Firstname xmlns="">Aa</Firstname>
    </Person>
</Persons>

wg / 1. Mai 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






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/XSD3_1.html