XML: de taal der talen
Auteur: Rick F. van der Lans
Geschreven: februari 2000
Gepubliceerd in: CM Corporate.Net, nummer 144

XML is hot! De leveranciers zijn er in geïnteresseerd, getuige het grote aantal XML-producten dat de laatste tijd is verschenen. Maar ook de klanten zien XML wel zitten. Uit een zeer recent, door InformationWeek uitgevoerd onderzoek bleek dat 45 procent van een groep van driehonderd IT managers XML op hun wenslijst voor 2000 hebben gezet.
In mijn vorige column schreef ik over de relatie tussen XML en databaseservers. In deze column wil ik ingaan op het definiëren van talen met XML. Let wel, we kunnen er geen programmeertalen mee definiëren, maar we kunnen er wel andere 'markup languages' mee creëren. Hoe werkt dat?
Tussen HTML en XML bestaan vele verschillen. Voor ons betoog zijn er twee relevant. De eerste heeft te maken met de lay-out van een document. Een HTML-document bevat naast de inhoud ook een beschrijving van de lay-out. Een XML-document daarentegen bevat geen lay-out specificaties. De layout van een XML-document kan wel apart beschreven worden met een XSL-document (Extensible Style Language). De taak van XSL is dus vergelijkbaar met die van CSS (Cascading Style Sheets) voor HTML-documenten.
Het tweede verschil is dat een HTML-document gegevens bevat zonder de beschrijving van wat die gegevens betekenen. Er staat bijvoorbeeld dat het getal 530 (de betekenis wordt bepaald door de context en de lezer) in groen met een klein font links bovenaan het scherm weergegeven moet worden. Veronderstel dat een XML-document specificaties over bepaalde automodellen bevat, zoals het gewicht, de lengte, en de maximale snelheid (en uiteraard zijn er nog veel meer specificaties voor een automodel te verzinnen). Voor elke specificatie kan bij XML een aparte tag gedefinieerd worden, zoals <gewicht> en <lengte>. We nemen dus niet alleen het getal 530 op, maar tevens dat dat de lengte van de auto in centimeters is.
Maar stel dat een autofabrikant voor elk automodel een XML-document creëert. Hoe kunnen we dan garanderen dat die XML-documenten op elkaar zijn afgestemd? Hoe kunnen we forceren dat elk XML-document een tag genaamd benzineverbruik bevat en dat een bepaalde volgorde van specificaties gewenst is? Dit soort eisen leggen we vast in een DTD (Document Type Definition). Hierin kunnen we onder andere beschrijven welke tags noodzakelijk, welke verplicht zijn, en welke herhaald mogen worden. Met andere woorden, we geven hier aan wat de regels zijn waaraan een XML-document moet voldoen.
Door deze tags te definiëren in een DTD, zijn we bezig een speciale markup-taal te bouwen voor de autobranche. De mogelijkheden van DTD's zijn echter zo ruim, dat we er vele markup-talen mee kunnen definiëren. Deze verschijnen dan ook in hoog tempo op de markt. We noemen er een paar. CML (Chemical Markup Language) wordt door chemisten in Groot-Brittannië gebruikt om beschrijvingen van moleculen, formules en andere chemische specificaties uit te wisselen. Met BRML (Common Rules and Business Rules Markup Language) kunnen bedrijfsregels vastgelegd worden. De afkorting JSML (Java Speech Markup Language) spreekt voor zich. WML (Wireless Markup Language) wordt in de WAP-wereld ingezet; het is een soort kleine broer van XML, maar gericht op kleine displays van onder andere mobiele telefoons. XMI (XML Metadata Interchange) is de taal die door bijvoorbeeld CASE-tools wordt gebruikt om analysespecificaties uit te wisselen.
En er zijn er nog veel meer en er zullen er nog veel meer komen. Een voorbeeld is XHTML die recentelijk is uitgekomen. Dit kan gezien worden als de opvolger van HTML 4.0. Het is HTML gedefinieerd met een DTD. XHMTL is dus net als WML en XMI een DTD waarmee speciale XML-documenten gecreëerd kunnen worden. XHTML gaat ons helpen om stapsgewijs van HTML (dat nu op bijna elke website wordt gebruikt) naar XML te migreren om zodoende de voordelen van XML te kunnen gaan benutten. Dit was nodig omdat de rek bij HTML er nu wel uit was.
Maar laat u hier niet van door de wijs brengen. WML-, XHTML-, of JSML-, of XMI-documenten zijn alle XML-documenten. Het verschil zit er in dat ze allemaal een andere DTD hebben. De taal die we gebruiken bij DTD is dus duidelijk een metataal.