7
1. xquery V 1 0'; 2. 3. (: Een voor je XQuery code dat zoekt naar 4. boeken m ery in de titel.. :) 5. 6. <html> 7. <body> 8. <ul>{ 9. 10. (: Doorzoek alle boeken :) 11. for $b in collection('books')/book 12. 13. (: Pak degene met 'XQuery' in de titel ;) 14. where contains($b/title, 'XQuery') 15. 16. (: Maak van het resultaat een HTML lijstje :) 17. return 18. <li>{ data( b/title) }</li> 19. 20. }</ul> 21. </body> </html XQUERY NOVELTIES REVISITED Door Geert Josten, [email protected] pew Op XML Holland 2010[1] heb ik een presentatie gegeven over de Iaatste nieuwtjes van XQuery [2]. Leuk en aardig, maar waarvoor gebruik je XQuery nou eigenlijk? En waarom XQuery ge- bruiken boven allerlei andere, al dan niet aan XML gerelateerde alternatieven? In dit artikel probeer ik hierop antwoord te geven en leg ik ook uit wat zo interessant is aan de (relatief nieuwe) uitbreidingen op XQuery. Waarvoor gebruik je XQuery? XQuery [3] staat voor XML Query Language [4]. Dat geeft al een beetje de essentie weer. Het is een taal waarmee subsets en substructuren uit een grote verzameling XML-bestanden gehaald kunnen worden. Deze kunnen daarbij bewerkt worden tot iets dat geschikt is om te verwerken in een volgend proces, of bijvoorbeeld om te tonen in een webbrowser. XQuery maakt daarbij veel gebruik van XPath [5]. Alle XML-standaarden kennen zo hun eigen toepassingsgebied. Om nog een aantal voorbeelden te noemen: XSLT [6] is een taal om XML om te zetten naar een ander formaat. XPointer [7] is een uitbreiding op XPath om met meer precisie substruc- turen of nog kleiner te adresseren. XLink [8] is een standaard om relaties vast te leggen. Xlnclude [9] is een standaard om op basis van relaties samenstellingen uit losse stukken XML te realiseren. En XProc [10] is een standaard waarmee in XML beschreven kan worden hoe XML-documenten in een of meerdere stappen met behulp van zogeheten XML-Pipelines verwerkt moeten worden tot het gewenste eindresultaat. Daarbij kan gebruik gemaakt worden van bijvoorbeeld XQuery, XSLT en XInclude en indirect dus ook van XPath, XPointer en XLink. Alle standaarden hangen met elkaar samen, ze vormen een geheel. De samenhang tussen een aantal van deze XML-standaarden wordt heel aardig samengevat in figuur 1 dat je op W3Schools [11] kunt vinden:

XQuery Novelties Revisited (

Embed Size (px)

DESCRIPTION

Op XML Holland 2010[1] heb ik een presentatie gegeven over de Iaatste nieuwtjes van XQuery[2]. Leuk en aardig, maar waarvoor gebruik je XQuery nou eigenlijk? En waarom XQuery gebruikenboven allerlei andere, al dan niet aan XML gerelateerde alternatieven? In dit artikelprobeer ik hierop antwoord te geven en leg ik ook uit wat zo interessant is aan de (relatiefnieuwe) uitbreidingen op XQuery.

Citation preview

Page 1: XQuery Novelties Revisited (

1. xquery V 1 0';

2.

3. (: Een voor je XQuery code dat zoekt naar

4. boeken m ery in de titel.. :)

5.

6. <html>

7. <body>

8. <ul>{

9.

10. (: Doorzoek alle boeken :)

11. for $b in collection('books')/book

12.

13. (: Pak degene met 'XQuery' in de titel ;)

14. where contains($b/title, 'XQuery')

15.

16. (: Maak van het resultaat een HTML lijstje :)

17. return

18. <li>{ data( b/title) }</li>

19.

20. }</ul>

21. </body>

</html

XQUERY NOVELTIES REVISITEDDoor Geert Josten,[email protected]

pewOp XML Holland 2010[1] heb ik een presentatie gegeven over de Iaatste nieuwtjes van XQuery

[2]. Leuk en aardig, maar waarvoor gebruik je XQuery nou eigenlijk? En waarom XQuery ge-

bruiken boven allerlei andere, al dan niet aan XML gerelateerde alternatieven? In dit artikel

probeer ik hierop antwoord te geven en leg ik ook uit wat zo interessant is aan de (relatief

nieuwe) uitbreidingen op XQuery.

Waarvoor gebruik je XQuery?

XQuery [3] staat voor XML Query Language [4]. Dat geeft al een beetje de essentieweer. Het is een taal waarmee subsets en substructuren uit een grote verzamelingXML-bestanden gehaald kunnen worden. Deze kunnen daarbij bewerkt worden totiets dat geschikt is om te verwerken in een volgend proces, of bijvoorbeeld om tetonen in een webbrowser. XQuery maakt daarbij veel gebruik van XPath [5].

Alle XML-standaarden kennen zo hun eigen toepassingsgebied. Om nog een aantalvoorbeelden te noemen: XSLT [6] is een taal om XML om te zetten naar een anderformaat. XPointer [7] is een uitbreiding op XPath om met meer precisie substruc-turen of nog kleiner te adresseren. XLink [8] is een standaard om relaties vast teleggen. Xlnclude [9] is een standaard om op basis van relaties samenstellingen uitlosse stukken XML te realiseren. En XProc [10] is een standaard waarmee in XMLbeschreven kan worden hoe XML-documenten in een of meerdere stappen metbehulp van zogeheten XML-Pipelines verwerkt moeten worden tot het gewensteeindresultaat. Daarbij kan gebruik gemaakt worden van bijvoorbeeld XQuery, XSLTen XInclude en indirect dus ook van XPath, XPointer en XLink.Alle standaarden hangen met elkaar samen, ze vormen een geheel. De samenhangtussen een aantal van deze XML-standaarden wordt heel aardig samengevat infiguur 1 dat je op W3Schools [11] kunt vinden:

Page 2: XQuery Novelties Revisited (

Figuur 1: Samenhang XML-standaarden

XQuery versus XSLT

XQuery heeft dus van oorsprong een tamelijk specifiek doel: stukjes XML extrahe-ren uit een grote(re) verzameling. Dit is heel wat anders dan XSLT, een taal die zichspecifiek richt op het omzetten van een XML-document in ander XML-document,een HTML-document of een document in een nog ander formaat.Je zou denken dat het vrij duidelijk zou moeten zijn wanneer en waarvoor je welkestandaard moet gebruiken. Toch boor je vaak de vraag wanneer je beter XSLT kuntgebruiken en wanneer je beter kunt kiezen voor XQuery. Het punt is namelijk datdeze twee talen, meer dan de andere, een grote overlap vertonen. Er zijn veel takendie je in XSLT kunt doen, die je ook in XQuery kunt doen, en vice versa. Deze vraagis in zekere zin onterecht en in andere zin niet altijd van belang. Toch zal ik hierwat dieper op ingaan, dan wordt vanzelf duidelijk waarom.Als je iets op meerdere manieren kunt aanpakkenen beide manieren doen het met vergelijkbaar ge-mak, dan is er niet echt reden om een van de tweeboven de ander to verkiezen. Toch zal je zien datbepaalde mensen voorkeur hebben voor XQuery.De syntax van XQuery is namelijk veel compacter,aangezien het niet in XML wordt uitgedrukt zoalsXSLT. XSLT werkt echter heel anders en dat maaktbijvoorbeeld het doen van bepaalde structuurwij zi-gingen veel eenvoudiger. In deze zin komt het dusvooral neer op enerzijds persoonlijke smaak en an-derzijds de specifieke uitdagingen van de taak dievoor handen ligt, welke van de twee door iemandgebruikt wordt.

1.

2. (: Een vergelijkin4' tussen XQuery en XSLT code :)

3.

4. (: For-each in XQuery.. :)

5.

6. for $b in $books

7. order by $b/title

8. return

9. $b/title

10.

11. (: For-each in XSLT.. :)

12.

13. <xsl:for-each select="$books"›

14. <xsl:sort select="title"/>

15. <xsl:copy-of selecl="title"/>

16. </xsl:for-each>

17.

Nu is het echter zo dat XQuery veel toegepast wordt in combinatie met databases.Dat brengt extra overwegingen met zich mee. Ten eerst zijn XSLT-fans niet altijdmensen die zich ook bezighouden met databases. XSLT kom je vaker tegen bij bij-voorbeeld documentconversies. Ten tweede brengen databases extra uitdagingenmet zich mee, vaak ook van een totaal andere orde. De XQuery Extensions spelenhier op in, terwijl XSLT geen (officiele) Extensions kent en die ook niet echt nodigheeft.Kortom, XQuery en XSLT laten zich moeilijk vergelijken — dat is dan ook meestalzinloos.

XQuery relatief onbekend

Het feit dat XSLT al veel langer bestaat dan XQuery heeft overigens ook invloed ge-had. In het begin had men niet zoveel keus; later was men gewend aan het snel vol-wassen geworden XSLT en stond XQuery nog de nodige jaren in de kinderschoenen.

Page 3: XQuery Novelties Revisited (

Un L

1 998 XSLT

1 999 XPath o

2000 Qui lt

2001

XPath 2.0 XQuery 1. 0

DOM

'XML-SchemaW3C-Emp4ehludgen

noch in der Entmckiung

Ei andere Vorschlage

ON Norm-DB-Arfragesdrache-

[illustration C. Tiirkerp

Figuur

.

< PAG >16

Het idee voor een XML Query Language is al ten tijde van de opkomst van XML ont-staan, maar het heeft veel langer geduurd voor het tot een W3C Recommendationis gekomen. Je zou dus kunnen zeggen dat XQuery, ten opzichte van bijvoorbeeldXSLT en XPath, nog maar net om de hoek komt kijken.Een van de oorzaken hiervoor is dat men, na de lancering van XPath in 1999, alsnel in de gaten kreeg dat zo'n taal grotendeels gebaseerd kon worden op XPath.Dit heeft in 2001 tot de eerste Working Draft van zowel XQuery 1.0 als XPath 2.0 ge-leid. XSLT kon en moest hier natuurlijk ook van profiteren. De Working Draft voorXSLT 2.0 werd in diezelfde tijd opgepakt. De Recommendations van deze drie zijnuiteindelijk min of meer tegelijk gelanceerd. We spreken dan inmiddels over 2007!XQuery is dus pas sinds 2007 een Recommendation, terwijl XSLT en XPath al sinds1999 een Recommendation zijn en al snel volop in gebruik waren. XQuery heeftnog altijd achterstand in te halen op XSLT en XPath. Daar komt bij dat in 1999XML en alles wat daar bij hoorde 'booming business' was. Tegenwoordig lopen deontwikkelingen op XML-gebied langzamer en trekken nieuwe hypes als JSON [12]en NoSQL [13] alle aandacht.XQuery heeft wat dat betreft ook achterstand in te halen op XML-databases. Dezedatabases ontstonden in velerlei vormen na de opkomst van XML, maar het ideevoor een generieke Query Language kwam pas een aantal jaar later. Ook het feitdat XQuery pas sinds enkele jaren een Recommendation is heeft brede ondersteu-ning in commerciele database-producten afgeremd. Enkele grote partijen zoalsIBM waren vanaf begin betrokken bij XQuery, andere partijen zoals Oracle volgdenpas later. Met commerciele XML-databases ging het ook zo: er waren enkele earlyadopters maar vooral partijen die liever de kat uit de boom keken.

Relatie met databases

Dat XQuery populair is in combinatie met databases is overigens geen toeval. Hetis voor de hand liggend om grote verzamelingen XML in een (XML-)database testoppen. Databases zijn immers bedoeld voor grootschalige opslag en efficienteextractie daaruit. Dat sluit dus perfect aan op het doel van XQuery.En ook dat is geen toeval. XQuery is namelijk (indirect) ontstaan uit databasetalenals SQL. Met de komst van XML ontstonden ook de eerste ideeen voor XML-opslag indatabases. In eerste instantie deed men dat vooral in relationele databases. Talenzoals SQL zijn niet toegerust op het ontsluiten van XML, dus ontstonden als vanzelfallerlei uitbreidingen en varianten daarop. Tegen de tijd dat de XSLT- en XPath-Recommendations een feit waren, werd ingezien dat er ook behoefte was aan eengenerieke Querytaal. Dit resulteerde in 2000 in de taal Quilt [14]. Na adoptie doorW3C werd dit omgedoopt tot de naam XQuery.Het volgende schema dat ik aan sheets van een lesprogramma over XML en databa-ses [15] ontleend heb, geeft een en ander beknopt weer.

2: Ontstaansgeschiedenis XPath en XQuery

Page 4: XQuery Novelties Revisited (

(: Een voor Full Text.. :)

(: Zoek boeken waarvan titel begint met XQuery novelties :)

//book(

6 title contains text 'XQuery' ftand 'novelties'

7 ordered distance at most 2 words at start

Het is dus geen toeval dat XQuery en databases zo goed samengaan. XQuery is juistvoor een belangrijk deel ontwikkeld en bedoeld voor databases. Wel is door W3Cbewust gekozen het daartoe expliciet niet beperkt te houden.

ar Relatie met database-functionaliteit

De ontwikkeling rond XQuery heeft dan wel lang geduurd, maar heeft al die jarengeenszins stilgestaan. XQuery kent de nodige uitbreidingen, die de kracht van detaal flink vergroten. Deze uitbreidingen komen voor een deel voort uit toepassin-gen binnen databases.Ronald Bourret heeft in het verleden een zeer informatieve website opgezet, waar-in XML en databases [16] uitgebreid aan bod komen. Daarin noemt hij een aantalbasisfunctionaliteiten waar elke database aan moet voldoen. De belangrijkste zijn:n Efficiente opslag en extractive.n (Full-tekst) zoeken.n Transactionele updates.n Data-integriteit en 'triggers'.n Parallelle toegang en bewerking.n Beveiliging en crash recovery.n Versionering van gegevens.Opslag is natuurlijk inherent aan databases. En zo horen bij een goede databaseook voorzieningen voor parallelle toegang en updates, beveiliging en crash reco-very. Extractie correspondeert met XQuery 1.0. Voor het zoeken is een Full-Textzoekstandaard ontwikkeld, voor updates een Update standaard. En ook voor data-integriteit en versioning zijn uitbreidingen bedacht, zij het nog onofficieel.

4 Uitbreidingen op XQuery

XQuery 1.0 leunt op XPath 2.0, het is in feite een uitbreiding daarop. XPath iseen krachtige taal om substructuren te adresseren, maar voor zoeken is het nietbedoeld. XQuery biedt daar zelf ook niet de juiste functionaliteit voor. Dat draaitmeer rond bewerking voor vervolgstappen. Daarom is een extra uitbreiding opdeze talen ontwikkeld: de XQuery and XPath Full Text 1.0 [17] standaard, die sindsmaart dit jaar een W3C Recommendation [18] is.

XQuery is geschikt om gegevens te extraheren en te bewerken, maar niet omwijzigingen door te voeren. Sinds maart dit jaar is de XQuery Update Facility 1.0[19] standaard een W3C Recommendation. Dat is een uitbreiding die wel blijvendeaanpassingen op de XML-structuren mogelijk maakt.

111P 1.1111111r(: Een voorbeeldje Update Facility

4. (: Voeg nieuw boek toe.. :)

5. insert node

6. <book><title>XQuery novelties revisited</title></book>

7. as last into doc('books.xml')/books

8.

Voor data integriteit is een (onofficieel) voorstel [20] gepresenteerd op XML Prague2010 [21]. Deze uitbreiding maakt het mogelijk definities van datacollecties, in-dexen en data-constraints in je XQuery-code op te nemen. In plaats van dit bijvoor-

PAG

1 7MENT

NG17•1M3

Page 5: XQuery Novelties Revisited (

1.

2. (: Voorbeeld XQuery Data Definition Facility :)

3.

4. (: definitie voor een 'users' collectie :)

5. declare collection users as element()*;

6.

7. (: index defintie voor 'users' op basis van @id :)

8. declare automatically maintained index users-by-id

9. on nodes xqddf:collection( xs:QName("users") )

10. by @id as xs:string;

11.

12. (: collectie vullen en uitlezen via index :)

13. xgddf:insert-nodes(

14. xs:QName("users"), <user id="geert"/>);

15.

16. xqddf:probe-index-point(

17. xs:QName("users-by-id"), "geert");

18.

beeld in de databaseconfiguratie te moeten vastleggen, wordt het onderdeel vande applicatiecode zelf. Dat maakt onderhoud veel overzichtelijker, zodat het doorde ontwikkelaar zelf gedaan kan worden, zonder al te veel kennis van de achterlig-

gende database.

Versioning wordt veel gebruikt bij Content Management, maar wordt ook voor an-dere doeleinden ingezet zoals traceability. Ook hiervoor is een (onofficieel) voorstel[22] gepresenteerd op XML Prague 2010. Deze uitbreiding gaat tamelijk ver. Volgensde Update Facility-standaard worden alle mutaties verzameld in een zogeheten Pen-

ding Update List. Aan het einde van het script wordt het resultaat van alle mutatiesin dat script opgeslagen. Dit voorstel beschrijft het idee om de gegevens op alleopslagmomenten te bewaren. Om dit efficient te doen wordt gesproken over zoge-heten Pending Update List compositions. Het resultaat is in ieder geval dat de volledigehistorie ter beschikking komt. Om deze te ontsluiten worden onder andere tweenieuwe `assen' aan XPath toegevoegd, waarmee je integraal door alle versies heenkunt navigeren.

1.

2. (: Voorbeeld benut:ing versiehistorie :)

3.

4. (: zoek naar oudere versies van huidige boek

5. : waarvan de prijs dubbel zo duur was.

6. :)

7.

8. past::book[(price div 2) ge current()/price]

9.

Het opslaan van al die gegevens kost veel schijfruimte, maar die is tegenwoordigdusdanig goedkoop, dat kosten niet meer het probleem zijn.

Beyond scope

XQuery beperkt zich echter niet alleen tot databasefunctionaliteit. Naast de algenoemde uitbreidingen zijn er nog twee die daar bovenuit gaan.Zo is er de opvolger van XQuery 1.0: XQuery 1.1 of eigenlijk XQuery 3.0 [23],momenteel nog een W3C Working Draft. Deze opvolger voegt een aantal moge-lijkheden toe die de expressiekracht flunk vergroten, zoals try/catch-constructies,outputdeclaraties, groeperen in de for-loop, maar ook dynamisch aanroepen vanfuncties, of anders gezegd: functies als datatype. Dit tilt XQuery naar een geheelnieuw niveau.Ook is de zogeheten XQuery Scripting Extension 1.0 [24] standaard in ontwikkeling.Deze uitbreiding kent een aantal nieuwe mogelijkheden die de taal veel meer hetallure van een (procedurele) programmeertaal geven, zoals een while-constructie,

PAG

18MENDI

.NR 3

Page 6: XQuery Novelties Revisited (

het herdefinieren van variabelen en een exit statement. Het bouwt ook voort opde XQuery Update Facility-standaard en maakt cumulatieve (sequentiele) updatesmogelij k.

lemlaw

1 11111111ken voorbeeldje XQuery 3.0 + ScripC tensions.. :)

3

4. (: Dit voorbeeld is ontleend aan een Twitter applicatie

5. : geschreven in XQuery, met als doel een Twitter gebruiker6. : aan de eigen contacten toe te voegen.7.

8. : Het maakt gebruik van het MVC design pattern.9. :)

10.

11. (: Follow functionaliteit van Twitter :)

12. declare sequential function twitter:follow-friend()

13.

14. (: Vraag user-id op van te volgen persoon.. :)15. declare $user_id :=

16. util:get-request-param("USER_ID");

17.

18. (: Controleer gebruikersessie.. :)

19. declare $is-loggedin as xs:boolean :=

20. model:is-loggedin();

21.

22. (: Toon login als sessie is verlopen.. :)

23. if (not($is-isloggedin)) then

24. exit returning view:show-login("Session expired")

25. else ();

26.

27. (: Pas data-model aan.. :)

28. try {

29.

30. model:follow-friend($user_id);

31.

32. } catch * ($code, $msg, $val) {33. (: Toon melding als update actie faalt.. :)

34. exit returning view:show-home(concat("ERROR: ", $msg))

35. };

36.

37. (: Ververs het scherm bij succes.. :)

38. view:show-home("Friend added successfully");

39. };

Dit maakt XQuery bij zonder geschikt als `scripting'-taal en gaat het in zekere zinde concurrentie aan met talen zoals JSP, ASP en PHP, maar in feite ook met talenals Java en .Net in hun web-toepassingen. W3C kopt niet voor niets met:

"XQuery is replacing proprietary middleware languages and Web Applicationdevelopment languages. XQuery is replacing complex Java or C++ programs with a fewlines of code..." [25]

4Programmeertaal

XQuery 3.0 en de Scripting Extension tillen XQuery naar een hoger niveau. Ze gevenXQuery het allure van een programmeertaal. Het is dan ook niet vreemd dat W3Czegt dat XQuery steeds meer database-specifieke talen en programmeertalenvervangt. XQuery is uitermate geschikt als taal voor database-ontsluiting, maardankzij doze laatste uitbreidingen gaat het nog veel verder. XQuery vormt de lijmdie alle applicatielagen bij elkaar kan brengen. Het is ook ruim krachtig genoegom bekende Design Patterns [26] zonder veel problemen te ondersteunen. Niet

Page 7: XQuery Novelties Revisited (

alleen het alom bekende Model-View-Controller [27] pattern, maar ook andere nut-tige patterns, zoals Observer, Strategy en andere [28].Om de werkelijke kracht van XQuery te laten zien, kan ik het beste verwijzennaar de applicatie die ik samen met 2 van mijn (oud-)collega's gemaakt heb in hetkader van een programmeerwedstrijd [29]. Het doel was simpel: maak een XQuery-applicatie die aanspreekt en goed in elkaar zit. Het resultaat was Socialito [30]: eenSocial Media Dashboard waarin de tweets en andere informatie van je Twitter-ac-count overzichtelijk weergegeven worden. Het gebruikersinterface maakt gebruikvan HTML en JavaScript (JQuery [31]), maar voor de rest wordt uitsluitend XQuerygebruikt. De gegevens worden daarbij opgeslagen in de XML structuur van Twitterzelf.Kortom, XQuery is dus niet alleen voor Querying XML, allang niet meer. In XQuerykun je de applicatielogica uitwerken en alle applicatielagen samenbrengen. Hetvormt daarmee de kern van je hele applicatie. Dit gaat veel verder dan alle andereXML-standaarden.

fleet weten?

Iedereen die meer wil weten en de kracht van XQuery in de praktijk zou willenzien, raad ik aan een bezoek te brengen aan XML Amsterdam 2011 op woensdag 26oktober aanstaande. Daar komen diverse Open Standaarden aan bod en wordt eendiepgaand praatje gehouden over XQuery.[1] XML Holland congres: http:11www.xmlholland.nl/jaarcongres[2] Laatste nieuwtjes van XQuery: http://xmlholland.nlisites/defaultifiles/Geert

josten-XMLHolland2010.pdf[3] XQuery: httR://www.w3.org/TRIxquery/[4] XML Query Language: http://www.w3.org/XML/Queryl[5] XPath: http:1/www.w3.org/TR/xpath20/[6] XSLT: http://www.w3.org/TR/xslt20/[7] XPointer: http://www.w3.org/TR/xptr-framework/[8] XLink: http://www.w3.org/TRIxlink11/[9] Xlnclude: http://www.w3.org/Th/xincludel[10] XProc: http://www.w3.org/TR/xprocl[11] W3Schools: http://www.w3schools.com/xpath/xaath_intro.asp[12] JSON: http ://en.wikipedia.org/wikiJSON[13] NoSQL: http://en.wikipedia.orgiwiki/NoSQL[14] Quilt: http://xml.coverpages.org/quilt euro.html[15] XML en databases: http://www.infuni-konstanz.de/dbis/teaching/ws0708/xmll [16] XML en databases: http://www.rpbourret.com/xml/XMLAndDatabases.htm [17] XQuery and XPath Full Text 1.0: http://www.w3.org/TR/xpath-full-text-10I[18] W3C Recommendation: http:LLwww.w3.org/TR/[19] XQuery Update Facility 1.0: http://www.w3.org/TR/xquery-update-10/[20] Voorstel: http://www.xmlprag_ue.cz/2010/presentations/Matthias Brantner

Extending XQuery with Collections Indexes and Integrity_Constraints.pdf[21] XML Prague 2010 congres: http://www.xmlprague.c42010/index.html[22] Voorstel: http: //www.xmlprague.cz/2010/sessions.html[23] XQuery 3.0: http:/Jwww.w3.org/TR/xquery-30/[24] XQuery Scripting Extension 1.0: http://www.w3.org/TRixquery-sx-10/[25] W3C over XQuery: http://www.w3.org/XML/Query/[26] Design Patterns: http://en.wikipedia.org/wiki/Design pattern_(computer_

science) [27] Model-View-Controller: http://code,google.comhjxqtnycj[28] Observer, Strategy en andere: httpj/patterns.28msec.com/[29] Programmeerwedstrijd: http://www.28msec.com/contest/results [30] Socialito: http://socialito.my28msec.com/[31] JQuery: http://j_query.com/[32] Geerts persoonlijke blog: http:llgrtjn.blogspot.com/[33] Blog van Daidalos: http://www.daidalos.nl/blo_gs/blog/author/Geertl

4 GeertJosten werkt al vanaf 2000 als IT-consultant bij Daidalos. Zijn werkter-rein is breed, maar hij is het meest actief als content engineer met de nadruk op XML engerelateerde standaarden. n n

PAG

20<!EJAM%