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.