XML -zelfstudie

XML HOME XML-introductie XML Hoe te gebruiken XML-structuur XML-syntaxis XML-elementen XML-kenmerken XML-naamruimten XML-weergave XML HTTP-verzoek XML-parser XML-DOM XML XPath XML XSLT XML XQuery XML XLink XML-validator XML-DTD XML Schema XML-server XML-voorbeelden XML-quiz XML-certificaat

XML AJAX

Ajax-introductie AJAX XMLHttp Ajax-verzoek Ajax-reactie AJAX XML-bestand AJAX PHP Ajax ASP AJAX-database AJAX-toepassingen Ajax-voorbeelden

XML-DOM

DOM-introductie DOM-knooppunten DOM-toegang DOM Node Info Lijst met DOM-knooppunten DOM doorkruisen DOM-navigatie DOM Waarden ophalen DOM-wijzigingsknooppunten DOM Knooppunten verwijderen DOM Knooppunten vervangen DOM Knooppunten maken DOM Knooppunten toevoegen DOM-kloonknooppunten DOM-voorbeelden

XPath- zelfstudie

XPath-introductie XPath-knooppunten XPath-syntaxis XPath-assen XPath-operators XPath-voorbeelden

XSLT- zelfstudie

XSLT-introductie XSL-talen XSLT-transformatie XSLT <sjabloon> XSLT <waarde-van> XSLT <voor elk> XSLT <sorteren> XSLT <if> XSLT <kiezen> XSLT toepassen XSLT op de client XSLT op de server XSLT Bewerk XML XSLT-voorbeelden

XQuery- zelfstudie

XQuery-introductie XQuery-voorbeeld XQuery FLWOR XQuery HTML XQuery-voorwaarden XQuery-syntaxis XQuery toevoegen XQuery selecteren XQuery-functies

XML -DTD

DTD Introductie DTD-bouwstenen DTD-elementen DTD-kenmerken DTD Elements vs Attr DTD-entiteiten DTD-voorbeelden

XSD- schema

XSD-introductie XSD Hoe kan ik? XSD <schema> XSD-elementen XSD-kenmerken XSD-beperkingen

XSD- complex

XSD-elementen XSD Leeg Alleen XSD-elementen Alleen XSD-tekst XSD gemengd XSD-indicatoren XSD <elke> XSD <anyAttribute> XSD-vervanging XSD-voorbeeld

XSD- gegevens

XSD-string XSD-datum XSD Numeriek XSD Diversen XSD-referentie

Webservices _

XML-services XML-WSDL XML SOAP XML-RDF XML-RSS

Referenties

Typen DOM-knooppunten DOM Node DOM-knooppuntlijst DOM NamedNodeMap DOM-document DOM-element DOM-kenmerk DOM-tekst DOM CDATA DOM-opmerking DOM XMLHttpRequest DOM-parser XSLT-elementen XSLT/XPath-functies

XSD -elementvervanging


Met XML Schema's kan het ene element een ander element vervangen.


Elementvervanging

Laten we zeggen dat we gebruikers hebben uit twee verschillende landen: Engeland en Noorwegen. We zouden graag de mogelijkheid willen hebben om de gebruiker te laten kiezen of hij of zij de Noorse elementnamen of de Engelse elementnamen in het XML-document wil gebruiken.

Om dit probleem op te lossen, zouden we een substitutionGroup in het XML-schema kunnen definiëren. Eerst declareren we een head-element en vervolgens declareren we de andere elementen die aangeven dat ze vervangbaar zijn voor het head-element.

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

In het bovenstaande voorbeeld is het "name"-element het head-element en kan het "navn"-element vervangen worden door "name".

Bekijk dit fragment van een XML-schema:

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

Een geldig XML-document (volgens het bovenstaande schema) kan er als volgt uitzien:

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

of zo:

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


Vervanging van blokkeringselementen

Gebruik het block attribuut om te voorkomen dat andere elementen worden vervangen door een opgegeven element:

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

Bekijk dit fragment van een XML-schema:

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

Een geldig XML-document (volgens bovenstaand schema) ziet er als volgt uit:

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

MAAR DIT IS NIET MEER GELDIG:

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

SubstitutionGroup gebruiken

Het type van de vervangbare elementen moet hetzelfde zijn als, of afgeleid zijn van, het type van het kopelement. Als het type van het vervangbare element hetzelfde is als het type van het head-element, hoeft u het type van het vervangbare element niet op te geven.

Merk op dat alle elementen in de substitutionGroup (het head-element en de vervangbare elementen) moeten worden gedeclareerd als globale elementen, anders werkt het niet!


Wat zijn globale elementen?

Globale elementen zijn elementen die directe kinderen zijn van het "schema"-element! Lokale elementen zijn elementen die in andere elementen zijn genest.