Lente 03 | Data | XML intro

Wat is XML

Een van de meest veelbelovende programmeertechnieken van de afgelopen tijd. In deze lesbrief wordt kort verteld wat XML is en wat je ermee kunt. Het wordt niet te technisch. Voor degenen die meer willen weten zijn er verwijzingen in de tekst opgenomen en op het eind een aantal links.

eXtensible Markup Language

XML staat voor eXtensible Markup Language. De ontwikkeling van de taal is begonnen in 1996 en in 1998 overgenomen door het World Wide Web Consortium, dat ook verantwoordelijk is voor de ontwikkeling van bijvoorbeeld HTML en HTTP. XML is een een versimpelde, gestroomlijnde versie van een veel oudere opmaaktaal: SGML. SGML is een internationaal geaccepteerde standaard die veel wordt gebruikt voor grote (veelal technische) documentatieprojecten. Daarnaast zijn er overeenkomsten tussen XML en HTML, wat een subset is van SGML. Met XML kun je documenten beschrijven die gestructureerde informatie bevatten. Gestructureerde informatie bestaat uit inhoud en indicaties over de betekenis van die inhoud. Het kan bijvoorbeeld gaan om recepten, technische tekeningen of financiële transacties.

Een XML bestand bestaat uit tekst, die ook door mensen te interpreteren is. Net als bij HTML wordt gebruik gemaakt van 'tags' (bijvoorbeeld <form>) en bijbehorende attributen (bijvoorbeeld <form name="aanvraag">). Bij HTML liggen de tags en hun betekenis vast. Bij XML is dat anders: tags worden alleen gebruikt om stukjes data te begrenzen, de betekenis van de tags en hun attributen is geheel door de programmeur te bepalen.

Een voorbeeld: we gaan een recept beschrijven in XML.

<?xml version="1.0"?>

Een voorwaarde voor elk XML document is dat duidelijk gemaakt moet worden dat het om XML gaat, en om welke versie.

<lijst>
	<recept>
		<auteur>Anna Del Conte</auteur>
		<recept_naam>spaghetti met knoflook,
		olie en chilipeper</recept_naam>
		<ingredienten>
			<item>350 g spaghetti</item>
			<item>5 el olijfolie</item>
			<item>3 teentjes knoflook, gepeld en in plakjes</item>
			<item>1 gedroogde chilipeper, fijngehakt zonder zaadjes</item>
			<item>zout</item>
		</ingredienten>
		<werkwijze>Kook de pasta in ruim kokend water.
		Bak ondertussen rustig de knoflook en de peper in de
		olie, niet veel langer dan een minuut. Giet de pasta
		af en voeg deze toe aan de saus. Na nog een minuutje
		bakken en roeren onmiddellijk opdienen.
		</werkwijze>
	</recept>
</lijst>

Vervolgens heb ik een aantal tags verzonnen die een recept beschrijven. Alle tags in een XML document moeten binnen een stamtag opgenomen zijn, vandaar de <lijst> tag. Een derde voorwaarde waaraan een XML document moet voldoen is dat er geen fout geneste tags mogen voorkomen, dus

<ingredienten>
      <item>350 g spaghetti</item></ingredienten>
      <item>5 el olijfolie</item>

wordt niet geaccepteerd.

De praktijk

Als ik op dezelfde manier nog een aantal recepten zou beschrijven heb ik een kleine receptendatabank gemaakt. Met behulp van elk programma dat XML kan lezen kan deze databank vervolgens toegankelijk worden gemaakt. En omdat in het XML bestand geen informatie over het uiterlijk van de recepten is vastgelegd, kunnen de recepten in elke vorm gegoten worden die je wilt: een HTML pagina voor het web, een WML pagina voor een mobiele telefoon of bijvoorbeeld een Word document.

XML is ontworpen voor gebruik op het internet. bijna alle browsers (ook microbrowsers van mobiele telefoons of palmtops e.d.) kunnen XML weergeven.

XML wordt wel al regelmatig aan de kant van de webserver gebruikt. Afhankelijk van de aanvrager wordt een XML document omgezet naar een HTML document (eventueel verschillende versies voor verschillende webbrowsers) of bijvoorbeeld een WML document voor een mobiele telefoon. Mocht er iets in de inhoud van de informatie veranderen, dan hoeft alleen maar het XML document te worden aangepast, terwijl er anders zeker twee (en vaak meer) bestanden te veranderen waren. Hetzelfde geldt voor de opmaak: om op alle pagina's waarop recepten voorkomen het lettertype van de ingredienten te veranderen, is een kleine verandering in de stylesheet voldoende.

Deze manier van werken betekent extra inspanning van de webserver. Als het in de toekomst beter mogelijk wordt over het internet in plaats van HTML bestanden XML bestanden te versturen kan het web sneller en handiger worden. Denk bijvoorbeeld aan het zoeken van een recept. Meestal gaat dat zo: de webserver stuurt jouw browser een HTML bestand met een formulier. Hierop geef je een aantal criteria aan, bijvoorbeeld dat het om een avondmaal moet gaan. Deze informatie wordt naar de webserver gezonden, die een nieuwe HTML pagina teruggestuurd met de recepten die aan de criteria voldoen, bijvoorbeeld gesorteerd op alfabet. Als je dezelfde lijst gesorteerd op auteur wilt zien, omdat je de recepten van Anna Del Conte wilt zien, moet de webserver een geheel nieuwe pagina voor je samenstellen en naar je opsturen. Dit samenstellen en opsturen kost tijd en bandbreedte.

Met XML is het mogelijk de webserver eenmalig de hele lijst te laten versturen (plus wat code voor het sorteren e.d.) en vervolgens de computer van de gebruiker het sorteerwerk te laten doen. Dit kan, zeker als het om een drukbezochte site gaat, veel tijd schelen.

Waarom XML?

Tenslotte

De receptendatabank die op eerder beschreven manier gemaakt kan worden is door elke computer, met welk besturingssysteem dan ook, te lezen. Ook voor mensen is de taal te begrijpen. De recepten kun je op allerlei verschillende plekken en manieren presenteren, zonder het XML document aan te hoeven passen. XML bespaart bandbreedte en computerkracht. En niemand hoeft iets te betalen, want XML is licentie vrij.

Na alle jubel een klein minpunt: de grootte van XML bestanden. Ze zijn vaak omvangrijker dan dezelfde informatie in binair formaat.

Links

Het is niet moeilijk op het net informatie over XML te vinden. Hieronder een kleine greep:

Algemene bronnen:
XML.com
XMLephant
The XML Cover Pages (Robin Cover)

Introducties:
A Technical Introduction to XML (Norman Walsh)
What is XML? (L. C. Rees)
Why XML? (Simon St.Laurent)

Tutorials:
Learn XML in 11.5 minutes (L. C. Rees)
XML Tutorial (Microsoft)

In plaats van XML is het goed mogelijk nu te kiezen voor andere tools als webservices met flash media server en flex.

http://www.adobe.com/devnet/flash/articles/ria_dataservices.html