XML Schema

In de grammaticataal XML Schema kunnen veel krachtiger (semantisch rijkere) XML-grammatica's worden geschreven dan in de DTD-taal. XML Schema is zelf ook een XML-taal, dus een XML-grammatica geschreven in XML Schema is zelf een XML-document. De grote semantische rijkdom (met onbegrensde mogelijkheden voor variatie en nuancering in datatypen) moet helaas worden ‘betaald' met een grote complexiteit.

Een XML Schema-grammatica voor weerberichten van het type weerbericht.xml heeft daardoor een aanzienlijke lengte. Hieronder geven we van zon grammatica alleen de eerste twee regels, de definitie van het element wind en de laatste regel:

 

 <?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
  <xs:element name="wind">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="richting">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="N"/>
              <xs:enumeration value="O"/>
              <xs:enumeration value="Z"/>
              <xs:enumeration value="W"/>
            </xs:restriction>
           </xs:simpleType>
         </xs:element>
         <xs:element name="snelheid">
           <xs:complexType>
             <xs:simpleContent>
               <xs:extension
                 base="xs:nonNegativeInteger">
                 <xs:attribute name="eenheid"
                   type="xs:string" use="required"/>
               </xs:extension>
             </xs:simpleContent>
           </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
...
</xs:schema>


De volledige grammatica heet weerbericht.xsd.

Toelichting

  • De diep geneste structuur en de inspringconventie geven dit XML-document zijn typische golvende structuur.
  • De woorden van de XML Schema-taal zijn herkenbaar aan de alias xs; ze horen - zoals uit het begin van de tweede regel blijkt - tot de XML Schema-namespace http://www.w3.org/2001/XMLSchema. Deze URL is eigendom van W3C, de internationale standaardisatieorganisatie voor het internet.
  • We zien dat een wind-element een opeenvolging (sequence) dient te zijn van een richting (hier beperkt tot N, O, Z en W) en een snelheid. Het subelement snelheid heeft als inhoud een nonNegativeInteger (voorgedefinieerd datatype) en een verplicht attribuut eenheid van type string (eveneens voorgedefinieerd).
  • Hoewel deze grammatica zelf gebruikmaakt van een namespace, is het er een voor de namespaceloze versie van weerbericht.xml.