Themapagina XML algemeen
XML is een door het World Wide Web Consortium (W3C) aanbevolen standaard voor het beschrijven van gestructureerde data. Als zodanig stelt XML communicerende partijen in staat gegevens uit te wisselen via een flexibel formaat, dat onafhankelijk is van applicaties en platformen en programmeertalen. XML is een generieke markup taal, dit wil zeggen, met behulp van XML kan een document worden voorzien van codes (tags) voor het structureren van de data in dit document.
Een XML document is een document dat is gestructureerd in een bepaalde indeling. De gebruikte indeling kan willekeurig zijn maar ook strikt afhankelijk zijn van een document type definitie. Aangezien deze DTD niet verplicht is mag de indeling ook willekeurig zijn zolang maar aan de basis regels van XML voldaan is. Dit is de grote kracht maar ook een zwakte van XML. Een standaard kommagescheiden bestand met een enkele geldige tag eromheen is ook geldige XML. Het is duidelijk dat met de data waarschijnlijk verder niets te beginnen valt.
De waarde van XML is gebaseerd op drie belangrijke eigenschappen:
- Structureerbaar, met XML is het mogelijk willekeurige complexe, hiërarchische data te representeren in een flexibel formaat. De structuur volgens welke de data wordt opgeslagen kan bovendien worden vastgelegd naast het document of in het document zelf. De structuur is per definitie niet ambigu (niet voor meerdere uitleg vatbaar) en dus niet op verschillende manieren te interpreteren.
- Valideerbaar, XML documenten kunnen eenvoudig worden gecontroleerd op juistheid. Door middel van een parser kan gecontroleerd worden of de structuur van de data overeenkomt met de definitie van die structuur.
- Uitbreidbaar, XML staat toe dat iedereen een eigen structuur definieert, daarnaast is het vrij eenvoudig bestaande structuren uit te breiden.
Deze eigenschappen maken XML tot een krachtige standaard die voor zeer uiteenlopende doeleinden gebruikt kan worden.
De structuur van een XML document
Een belangrijk voordeel van XML documenten is dat ze zowel leesbaar zijn voor machines als voor mensen. Een XML document bestaat namelijk uit normale tekst. Hieronder staat een globale beschrijving van de structuur van een XML document.
Elementen
Een XML document bestaat uit gestructureerde data, deze is ondergebracht in zogeheten elementen. Elk element heeft een type, inhoud en eventueel attributen. De inhoud mag leeg zijn, kan uit tekst bestaan of weer uit andere elementen bestaan. Dit is een eenvoudig voorbeeld van een XML document met slechts één element.
<voornaam>Hein</voornaam>
Dit element heeft als type 'voornaam', en als inhoud de tekst 'Hein'. De inhoud van een element moet altijd worden omsloten door zogenaamde tags. Een element begint met een begin tag en eindigt met een eind tag. Een begin tag is een woord omgeven door '<' en '>' tekens, terwijl een eind tag hetzelfde woord is met een '/' teken ervoor.
Elementen kunnen ook weer uit andere elementen bestaan.
<naam> <voornaam>Hein</voornaam> <achternaam>Pragt</achternaam> </naam>
Dit document bestaat uit drie elementen, waarbij het element 'naam' is samengesteld uit 'voornaam' en 'achternaam'. Op deze manier kunnen willekeurige gegevens worden gestructureerd. Voorwaarde is wel dat alle elementen goed genest (in de correcte volgorder staan en in de goede volgorde afgesloten worden) zijn.
Attributen
Elementen kunnen ook attributen hebben, hiermee kan extra informatie worden opgeslagen bij een element.
<inkoopprijs valuta="euro">10.45</inkoopprijs>
Attributen worden meestal gebruikt om extra informatie te geven over de data. In een DTD kan ook een attribuut lijst opgenomen worden zodat er maar een beperkt aantal controleerbare attributen mogelijk zijn.
Document type beschrijving
Door middel van een schema of DTD kunnen we de structuur van een XML document vastleggen. Een DTD vormt een soort grammatica van een XML document. De DTD kan in het XML document zelf worden opgenomen. In dit geval is een XML document dan zelfbeschrijvend omdat het document zijn eigen definitie bevat.
Een DTD voor het vorige naam voorbeeld zou er zo uit kunnen zien:
<!ELEMENT naam (voornaam, achternaam)> <!ELEMENT voornaam (#PCDATA)> <!ELEMENT achternaam (#PCDATA)>
#PCDATA staat voor de inhoud van het element en is tevens de laagste stap in de DTD. Het element voornaam kan dus geen subelementen bevatten. Het element naam is samengesteld uit andere elementen, namelijk een element voornaam gevolgd door een element achternaam. Binnen naam mag ook geen tekst staan, alleen maar de twee elementen voornaam en achternaam. Op deze wijze dwingen we een structuur af via een DTD. Een XML parser kan de structuur van het XML document controleren met behulp van deze DTD.
