Lees voor "gestructureerde data" dingen zoals
spreadsheets, adressenbestanden, configuratie-parameters, financiële
transacties, technische tekeningen, enz. Programma's die zulke data produceren
slaan die vaak op op schijf, waarvoor ze ofwel een binair formaat, ofwel een
tekstformaat gebruiken. Een tekstformaat staat toe dat je, zo nodig, de data
kunt bekijken zonder gebruik te maken van het programma dat ze produceerde.
XML is een verzameling regels, richtlijnen, gebruiken, hoe je ze ook maar wilt
noemen, voor het ontwerpen van tekstformaten voor dergelijke data, op een
dusdanige manier dat het eenvoudig is (voor de computer) bestanden te
genereren en te lezen; bestanden, bovendien, die nooit ambigu zijn en waarmee
vaak voorkomende fouten kunnen worden vermeden, zoals bestanden die niet
extensibel zijn, die niet kunnen worden geïnternationaliseerd of vertaald of
die platform-afhankelijk zijn.
XML
maakt gebruik van tags (woorden tussen '<' en '>) en van
attributen (
naam="waarde"
), net als HTML. Maar terwijl
HTML specificeert wat alle tags en attributen betekenen (en voor een deel ook
hoe de tekst ertussen er in een browser uit ziet), gebruikt XML de tags alleen
als afbakening voor stukjes data en laat de interpretatie geheel over aan de
applicatie die ze leest. Anders gezegd: als je een "<p>" ziet in een XML
file, ga er dan niet vanuit dat het een alinea is. Afhankelijk van de context
kan het een prijs zijn, een parameter, een persoon, een p... (trouwens, waarom
zou het iets met een "p" moeten zijn?)
XML-bestanden zijn tekstbestanden, zoals ik eerder al zei, maar als
HTML-bestanden al niet bedoeld zijn om door mensen gelezen te worden,
XML-bestanden zijn dat nog minder. Het zijn tekstbestanden, omdat experts
(zoals programmeurs) dan eenvoudiger hun applicaties kunnen debuggen,
en omdat ze in noodgevallen een eenvoudige tekst-editor kunnen gebruiken om
beschadigde XML-bestanden te repareren. Maar de regels voor XML zijn veel
strenger dan voor HTML. Een vergeten tag of een attribuut zonder
aanhalingstekens maakt het bestand onleesbaar, terwijl dergelijke dingen in
HTML vaak expliciet zijn toegestaan, of tenminste worden getolereerd. In de
officiële specificatie voor XML staat te lezen dat het niet is
toegestaan voor een applicatie te proberen te raden wat de maker van
een beschadigd XML-bestand bedoelde; als het bestand beschadigd is, dan moet
de applicatie op die plaats stoppen en een foutmelding geven.
We hebben XML 1.0, de specificatie
die definiëert wat "tags" en "attributen" zijn, maar rondom XML 1.0 bestaat
een groeiende verzameling van optionele modules die verzamelingen tags &
attributen of richtlijnen voor bepaalde taken bieden. Zo is er Xlink, die een standaardmethode beschrijft om
hyperlinks aan een XML-bestand toe te voegen. XPointer &
XFragments (nog in ontwikkeling in juni 2001) zijn syntaxen om naar
delen van een XML-bestand te kunnen wijzen. (Een XPointer is een beetje als
een URL, maar in plaats van naar een document op het Web, wijst hij naar een
stukje data in een XML-bestand.) CSS, de stijl-taal, kan zowel op XML als
op HTML worden toegepast. XSL is de geavanceerde taal voor stijl. Hij is
gebaseerd op XSLT, een
transformatie-taal, die ook vaak los van XSL wordt gebruikt, voor het
hergroeperen, toevoegen of verwijderen van tags & attributen. De DOM is een verzameling
standaardfuncties om XML (en HTML) te manipuleren vanuit een programmeertaal.
XML Namespaces is een
specificatie die beschrijft hoe je een URL kunt toevoegen aan elke tag en elk
attribuut in een XML-bestand. Maar het is de applicatie die het bestand leest
die uitmaakt waar die URL voor wordt gebruikt. (Bijvoorbeeld: RDF, W3C's standaard voor metadata,
gebruikt hem om elk stukje metadata te linken aan een bestand dat definieert
wat het type van de data is.) XML Schemas 1 en 2 helpen ontwikkelaars
bij het precies definiëren van op XML gebaseerde formaten. Er bestaan
inmiddels verscheidene andere modules en hulpmiddelen en andere zijn in
ontwikkeling. Let op de pagina W3C's
technical reports.
Omdat XML een tekstformaat is, en omdat het tags gebruikt om data af te
bakenen, zijn XML-bestanden bijna altijd groter dan vergelijkbare binaire
bestanden. Dat was een bewuste keuze van de XML-ontwikkelaars. De voordelen
van een tekstformaat zijn duidelijk (zie 3 hierboven) en de nadelen kunnen
meestal op een ander niveau worden gecompenseerd. Schijfruimte is niet zo duur
meer als het ooit was en programma's zoals zip en gzip kunnen bestanden
zeer goed en zeer snel comprimeren. Deze programma's zijn voorhanden op bijna
alle platformen (en zijn meestal gratis). Bovendien kunnen
communicatie-protocollen zoals modems en HTTP/1.1 (het basis-protocol
van het Web) data comprimeren, zodat ze net zoveel bandbreedte gebruiken als
binaire bestanden.
De
ontwikkeling van XML is begonnen in 1996 en het is een W3C-standaard sinds
februari 1998, waardoor je misschien kunt denken dat het een tamelijk
onvolwassen technologie betreft. Maar in werkelijkheid is die technologie niet
zo nieuw. Vòòr XML was er al SGML, ontwikkelt begin jaren '80, een
ISO-standaard sinds 1986 en veel gebruikt voor grote documentatie-projecten.
En natuurlijk HTML, waarvan de ontwikkeling is begonnen in 1990. De
ontwikkelaars van XML hebben eenvoudigweg de beste delen van SGML genomen,
gestuurd door de ervaring met HTML, en hebben iets geproduceerd dat niets in
kracht onderdoet voor SGML, maar dat stukken consistenter en eenvoudiger in
het gebruik is. Maar sommige evoluties zijn moeilijk te onderscheiden van
revoluties... En het is waar dat SGML in brede kring werd gebruikt voor
technische documentatie en veel minder voor ander soorten data, terwijl dat
met XML precies omgekeerd is.
Deze weet ik nog niet.
Door
XML als basis voor een project te kiezen boor je een grote en groeiende
gemeenschap aan van gereedschappen (waarvan er misschien één al doet wat je
nodig hebt!) en ingenieurs met ervaring in de technologie. Kiezen voor XML is
een beetje zoals kiezen voor SQL in databases: je moet nog steeds je eigen
database bouwen en je eigen programma's en procedures om ermee te werken, maar
er zijn vele hulpmiddelen beschikbaar en veel mensen die je kunnen helpen. En
omdat XML, als een W3C-technologie, vrij van licenties is, kun je je eigen
software eromheen bouwen zonder iemand iets te betalen. De brede en groeiende
ondersteuning betekent dat je niet aan één software-maker gebonden bent.
XML is niet altijd de beste oplossing, maar het is altijd waard hem in
overweging te nemen.
Copyright © 1999-2000 W3C® ( MIT, INRIA, Keio), alle rechten voorbehouden.