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.