Publicatie:XML Schema

Uit Meemoo Kennisbank
Naar navigatie springen Naar zoeken springen

Een XML Schema is vergelijkbaar met een externe DTD, maar maakt gebruik van een specifieke XML-syntaxis om de naam en de structuur van de elementen vast te leggen. XML-schema's hebben dezelfde functie als DTD's - het vastleggen van de inhoud en de structuur van XML-documenten -, maar bieden heel wat extra mogelijkheden.

  • XML Schema's hebben een syntaxis die toegespitst is op het valideren van documenten met een complexe structuur. Dit maakt ze bij uitstek geschikt voor het valideren van complexe inventarissen en catalogi.
  • XML Schema's bieden een brede waaier aan datatypes voor de XML-elementen. Datatypes bepalen welk type waarden het XML-element kan bevatten en welke bewerkingen erop uitgevoerd kunnen worden.
  • XML Schema’s bieden ondersteuning voor het transformeren van XML-documenten: het omvormen van de structuur van een XML-document.
  • XML Schema's bieden ondersteuning voor XML namespaces. XML Namespaces zijn een eenvoudige manier om in verschillende XML-documenten de XML-elementen en -attributen te voorzien van een unieke naam. Verder in deze handleiding vind je meer informatie over Publicatie:XML Namespaces.

XML Schema syntaxis

XML Schema’s leggen de inhoud en structuur van XML-documenten vast, maar ze zijn zelf ook volledig opgebouwd als een XML-document met een heel specifieke inhoud en structuur. Bekijk even opnieuw het vertrouwde XML-document en het bijhorende XML Schema:

Het originele XML-document Het XML Schema
XML Figuur 3.jpg XML XMLSchema 2.jpg

Basiselementen

Een XML Schema maakt gebruik van de volgende elementen voor het bepalen van de grammatica van een XML-document:

  • Net als XML-documenten openen XML Schema's met een XML-verklaring die de XML-versie (version) en de gebruikte karakterset (encoding) definieert.
  • Het eigenlijke schema opent vervolgens met een allesomvattend schema-element (<xs:schema>), het root-element van ieder XML Schema. De begintag bevat een attribuut dat de standaard namespace van het XML Schema bepaalt (xmlns:xs="http://www.w3.org/2001/XMLSchema"), wat betekent dat alle elementnamen in dit document ontleend worden aan de "XML Schema namespace" en worden vooraf gegaan door het prefix "xs:". Dit attribuut doet weinig meer dan bepalen dat dit XML-document geïnterpreteerd moet worden als een XML Schema. Verder in deze handleiding vind je meer informatie over Publicatie:XML Namespaces.
  • Net als de DTD’s beschrijven XML Schema’s de grammatica van XML-documenten. Om de elementen van het XML-document te bepalen gebruikt XML Schema het standaard element <xs:element>. De naam van het element wordt opgenomen als een attribuut: <xs:element name="catalogus">.

Hiërarchie

Omdat XML Schema gebruik maakt van XML, wordt de hiërarchie van de elementen in een XML-document weergegeven door inbedding van de elementen. Op het hoogste niveau vinden we in het voorbeeld hierboven het element <catalogus>, waarbinnen de rest van de elementen ingebed is:

XML Schema catalogus.jpg
  • Het complex-element (<xs:complexType>) verklaart dat <catalogus> een complex element is, wat wil zeggen dat het nog andere elementen en/of attributen bevat. Dat is zo in het geval van het originele XML-document: <catalogus> omvat <boek>. Vervolgens is <boek> ook een complex element omdat het respectievelijk <titel>, <auteur>, <jaar> en <prijs> omvat. Een simple-element (<xs:simpleType>) bevat daarentegen geen andere elementen en/of attributen.
  • Het sequence-element (<xs:sequence>) verklaart dat alle subelementen van het moederelement in een vaste volgorde moeten voorkomen. Die volgorde wordt bepaald door de volgorde waarin de elementnamen zijn ingebed in het sequence-element.

Het voorbeeld XML Schema bovenaan de pagina bepaalt dat het root-element van het XML-document <catalogus> is, dat dit element andere elementen bevat (<xs:complexType>) en dat die elementen in een bepaalde volgorde moeten voorkomen (<xs:sequence>). Vervolgens bepaalt het XML Schema dat in <catalogus> het element <boek> is ingebed. Ook dit element kan andere elementen bevatten volgens een bepaalde volgorde.

XML Schema boek.jpg

Het element <boek> kan vier elementen bevatten in de volgorde <titel>, <auteur>, <jaar> en <prijs>.

Datatypes

Naast de naam van de elementen geeft het schema ook het datatype (bvb. type="string") van hun inhoud weer.

  • De inhoud van de elementen <titel> en <auteur> zijn van het type string, wat wil zeggen dat hij uit gewone karakters bestaat.
  • De inhoud van <jaar> en <prijs> is van numerieke aard. Het datatype decimal laat komma’s toe. Het datatype integer doet dat niet.

Attributen

Nadat alle elementen die kunnen voorkomen in <catalogus> opgesomd zijn, bepaalt het XML Schema de attributen van het catalogus-element

XML Schema attribuut.jpg
  • Het attribuut categorie is ingebed in <xs:element name="catalogus"> door middel van het element <xs:attribute>. Het schema bepaalt dat het attribuut van het datatype string is en dat het verplicht voorkomt.

Uitwisselbaarheid

Met DTD's en XML Schema's kan je de inhoud en structuur van een XML-document vastleggen. Op die manier zorg je ervoor dat je digitale inventaris inhoudelijk en formeel consistent blijft en dat computersystemen je data steeds correct kunnen interpreteren.

Dat is vooral nuttig wanneer de data uit je digitale inventaris wordt uitgewisseld tussen verschillende computersystemen. Dat kan binnen je eigen organisatie gebeuren, bijvoorbeeld wanneer je data uit je collectiemanagementsysteem uitwisselt met het contentmanagementsysteem van je website. Maar het is vooral nuttig wanneer je data wil uitwisselt met externe computersystemen, zoals zoekmachines en websites van andere organisaties waarop je digitale collectie terug te vinden is. Om dit mogelijk te maken zal je afspraken moeten maken met die organisaties over de grammatica die je gebruikt om je data door beide systemen te laten lezen. Om die afspraken zo eenvoudig mogelijk te maken en je data proactief voor zoveel mogelijk computersystemen leesbaar te maken, maak je best gebruik van standaard grammatica's die het makkelijk maken om de informatie uit jouw systeem te mappen naar het systeem van de andere organisatie.

Er zijn twee manieren om het mappen van XML-elementen van het ene systeem naar het andere te vergemakkelijken:

  • het gebruik van standaard namen voor XML-tags. Op die manier kunnen verschillende systemen makkelijk de inhoud van XML-elementen interpreteren. In de praktijk kan je standaard namen voor XML-elementen toepassen door gebruik te maken van XML namespaces (zie volgende pagina).
  • het gebruik van standaard XML Schema's. Op die manier kunnen verschillende systemen niet alleen de namen van XML-elementen, maar ook de structuur van een XML-document herkennen.

Op de volgende pagina's vind je meer informatie over XML namespaces en standaard XML Schema's en hoe je die kan gebruiken om je digitale inventaris uitwisselbaar te maken.