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


Bei XML-Schemas kann ein Element ein anderes Element ersetzen.


Elementsubstitution

Nehmen wir an, wir haben Benutzer aus zwei verschiedenen Ländern: England und Norwegen. Wir möchten, dass der Benutzer wählen kann, ob er oder sie die norwegischen Elementnamen oder die englischen Elementnamen im XML-Dokument verwenden möchte.

Um dieses Problem zu lösen, könnten wir eine substitutionGroup im XML-Schema definieren. Zuerst deklarieren wir ein head-Element und dann deklarieren wir die anderen Elemente, die angeben, dass sie das head-Element ersetzen können.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

Im obigen Beispiel ist das Element „name“ das Head-Element und das Element „navn“ kann durch „name“ ersetzt werden.

Sehen Sie sich dieses Fragment eines XML-Schemas an:

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

Ein gültiges XML-Dokument (nach obigem Schema) könnte so aussehen:

<customer>
  <name>John Smith</name>
</customer>

oder so:

<kunde>
  <navn>John Smith</navn>
</kunde>


Blockierende Elementsubstitution

Um zu verhindern, dass andere Elemente ein bestimmtes Element ersetzen, verwenden Sie das block-Attribut:

<xs:element name="name" type="xs:string" block="substitution"/>

Sehen Sie sich dieses Fragment eines XML-Schemas an:

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

Ein gültiges XML-Dokument (nach obigem Schema) sieht so aus:

<customer>
  <name>John Smith</name>
</customer>

ABER DAS GILT NICHT MEHR:

<kunde>
  <navn>John Smith</navn>
</kunde>

Verwendung von substitutionGroup

Der Typ der substituierbaren Elemente muss derselbe sein wie der Typ des Kopfelements oder davon abgeleitet sein. Wenn der Typ des ersetzbaren Elements derselbe ist wie der Typ des Kopfelements, müssen Sie den Typ des ersetzbaren Elements nicht angeben.

Beachten Sie, dass alle Elemente in der substitutionGroup (das Head-Element und die substituierbaren Elemente) als globale Elemente deklariert werden müssen, sonst funktioniert es nicht!


Was sind globale Elemente?

Globale Elemente sind Elemente, die unmittelbare Kinder des "schema"-Elements sind! Lokale Elemente sind Elemente, die in anderen Elementen verschachtelt sind.