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


Een complex element bevat andere elementen en/of attributen.


Wat is een complex element?

Een complex element is een XML-element dat andere elementen en/of attributen bevat.

Er zijn vier soorten complexe elementen:

  • lege elementen
  • elementen die alleen andere elementen bevatten
  • elementen die alleen tekst bevatten
  • elementen die zowel andere elementen als tekst bevatten

Opmerking: elk van deze elementen kan ook attributen bevatten!


Voorbeelden van complexe elementen

Een complex XML-element, "product", dat leeg is:

<product pid="1345"/>

Een complex XML-element, "werknemer", dat alleen andere elementen bevat:

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

Een complex XML-element, "food", dat alleen tekst bevat:

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

Een complex XML-element, "description", dat zowel elementen als tekst bevat:

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


Hoe een complex element te definiëren?

Kijk naar dit complexe XML-element, "employee", dat alleen andere elementen bevat:

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

We kunnen een complex element in een XML Schema op twee verschillende manieren definiëren:

1. Het element "employee" kan direct worden gedeclareerd door het element een naam te geven, zoals deze:

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

Als u de hierboven beschreven methode gebruikt, kan alleen het element "employee" het opgegeven complexe type gebruiken. Merk op dat de onderliggende elementen, "voornaam" en "achternaam", worden omgeven door de indicator <reeks>. Dit betekent dat de onderliggende elementen in dezelfde volgorde moeten verschijnen als waarin ze zijn gedeclareerd. U leert meer over indicatoren in het hoofdstuk XSD-indicatoren.

2. Het element "employee" kan een typeattribuut hebben dat verwijst naar de naam van het te gebruiken complexe type:

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

Als u de hierboven beschreven methode gebruikt, kunnen verschillende elementen verwijzen naar hetzelfde complexe type, zoals deze:

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

Je kunt ook een complex type baseren op een bestaand complex type en enkele elementen toevoegen, zoals deze:

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