XML -Tutorial

XML-HOME XML-Einführung XML-Wie zu verwenden XML-Baum XML-Syntax XML-Elemente XML-Attribute XML-Namespaces XML-Anzeige XML-HttpRequest XML-Parser XML-DOM XML-XPath XML-XSLT XML-XQuery XML-XLink XML-Validierer XML-DTD XML-Schema XML-Server XML-Beispiele XML-Quiz XML-Zertifikat

XML-AJAX

AJAX-Einführung AJAX-XMLHttp AJAX-Anfrage AJAX-Antwort AJAX-XML-Datei AJAX-PHP AJAX ASP AJAX-Datenbank AJAX-Anwendungen AJAX-Beispiele

XML-DOM

DOM-Einführung DOM-Knoten DOM-Zugriff DOM-Knoten-Info DOM-Knotenliste DOM-Traversierung DOM-Navigation DOM Get-Werte DOM-Änderungsknoten DOM-Knoten entfernen DOM-Ersetzungsknoten DOM-Knoten erstellen DOM-Knoten hinzufügen DOM-Klonknoten DOM-Beispiele

XPath -Tutorial

XPath-Einführung XPath-Knoten XPath-Syntax XPath-Achsen XPath-Operatoren XPath-Beispiele

XSLT -Tutorial

XSLT-Einführung XSL-Sprachen XSLT-Transformation XSLT <Vorlage> XSLT <Wert von> XSLT <für-jeden> XSLT <sortieren> XSLT <wenn> XSLT <auswählen> XSLT anwenden XSLT auf dem Client XSLT auf dem Server XSLT XML bearbeiten XSLT-Beispiele

XQuery- Tutorial

XQuery-Einführung XQuery-Beispiel XQuery FLWOR XQuery-HTML XQuery-Bedingungen XQuery-Syntax XQuery hinzufügen XQuery-Auswahl XQuery-Funktionen

XML -DTD

DTD-Einführung DTD-Bausteine DTD-Elemente DTD-Attribute DTD-Elemente vs. Attr DTD-Entitäten DTD-Beispiele

XSD- Schema

XSD-Einführung XSD-Anleitung XSD <Schema> XSD-Elemente XSD-Attribute XSD-Einschränkungen

XSD- Komplex

XSD-Elemente XSD leer Nur XSD-Elemente Nur XSD-Text XSD gemischt XSD-Indikatoren XSD <beliebig> XSD <beliebiges Attribut> XSD-Ersetzung XSD-Beispiel

XSD -Daten

XSD-String XSD-Datum XSD Numerisch XSD Sonstiges XSD-Referenz

Webdienste _

XML-Dienste XML-WSDL XML-SOAP XML-RDF XML-RSS

Verweise

DOM-Knotentypen DOM-Knoten DOM-Knotenliste DOM NamedNodeMap DOM-Dokument DOM-Element DOM-Attribut DOM-Text DOM-CDATA DOM-Kommentar DOM-XMLHttpRequest DOM-Parser XSLT-Elemente XSLT/XPath-Funktionen

XSD- Komplex-Elemente


Ein komplexes Element enthält andere Elemente und/oder Attribute.


Was ist ein komplexes Element?

Ein komplexes Element ist ein XML-Element, das andere Elemente und/oder Attribute enthält.

Es gibt vier Arten von komplexen Elementen:

  • leere Elemente
  • Elemente, die nur andere Elemente enthalten
  • Elemente, die nur Text enthalten
  • Elemente, die sowohl andere Elemente als auch Text enthalten

Hinweis: Jedes dieser Elemente kann auch Attribute enthalten!


Beispiele für komplexe Elemente

Ein komplexes XML-Element "product", das leer ist:

<product pid="1345"/>

Ein komplexes XML-Element, "Mitarbeiter", das nur andere Elemente enthält:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Ein komplexes XML-Element, "food", das nur Text enthält:

<food type="dessert">Ice cream</food>

Ein komplexes XML-Element, "Beschreibung", das sowohl Elemente als auch Text enthält:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>


So definieren Sie ein komplexes Element

Schauen Sie sich dieses komplexe XML-Element „Mitarbeiter“ an, das nur andere Elemente enthält:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Wir können ein komplexes Element in einem XML-Schema auf zwei verschiedene Arten definieren:

1. Das Element "Mitarbeiter" kann direkt deklariert werden, indem das Element wie folgt benannt wird:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Wenn Sie die oben beschriebene Methode verwenden, kann nur das Element "Employee" den angegebenen komplexen Typ verwenden. Beachten Sie, dass die untergeordneten Elemente "firstname" und "lastname" vom Indikator <sequence> umgeben sind. Das bedeutet, dass die untergeordneten Elemente in der gleichen Reihenfolge erscheinen müssen, in der sie deklariert wurden. Mehr über Indikatoren erfahren Sie im Kapitel XSD-Indikatoren.

2. Das „employee“-Element kann ein type-Attribut haben, das auf den Namen des zu verwendenden komplexen Typs verweist:

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Wenn Sie die oben beschriebene Methode verwenden, können mehrere Elemente auf denselben komplexen Typ verweisen, wie hier:

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Sie können einen komplexen Typ auch auf einem vorhandenen komplexen Typ aufbauen und einige Elemente wie folgt hinzufügen:

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>