Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
J. H. J. de Groot, s0367672 Prof. dr. ir. J. Nerbonne Alfa-Informatica Rijksuniversiteit Groningen © 2001 by J. H. J. de Groot http://www.let.rug.nl/~s0367672/scriptie/
[email protected] [email protected]
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 1 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Inhoudsopgave Hoofdstuk 1. 1.1 1.1.1 1.2 1.2.1 1.2.2 1.2.3
Inleiding, onderzoeksvraag Inleiding Motivatie Onderzoek Onderzoeksvraag Onderzoeksverslag Afbakening
blz. 5 blz. 5 blz. 5 blz. 6 blz. 6 blz. 6 blz. 6
Hoofdstuk 2. 2.1 2.1.1 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.4 2.4.1
XML, de Extensible Markup Language Markup talen Markup Afkomst en ontwikkeling SGML HTML XML XML tussen SGML en HTML Het XML document XML-structuren XML markup XML voorbeeld XML als een dataformaat Het verwerken van XML-documenten De DOM-API De SAX-API XSL XSL
blz. 7 blz. 7 blz. 7 blz. 7 blz. 7 blz. 8 blz. 8 blz. 9 blz. 9 blz. 9 blz. 10 blz. 11 blz. 11 blz. 12 blz. 13 blz. 13 blz. 14 blz. 14
Hoofdstuk 3. 3.1 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.3 3.3.1 3.3.2
Relationele databases Het Relationele Data Model Inleiding Het relationele model Relationele algebra RDBMS Inleiding Rapport generatoren Inleiding Geschiktheid voor onderzoeksdoel
blz. 15 blz. 15 blz. 15 blz. 15 blz. 16 blz. 16 blz. 16 blz. 17 blz. 17 blz. 17
Hoofdstuk 4. 4.1 4.1.1 4.1.2 4.2 4.2.1 4.2.2 4.2.3
Het onderzoeksgebied Twee werelden Het Web Relationele databases Naar elkaar toe Integratie XML-documenttypen Documentgerichte documenten
blz. 18 blz. 18 blz. 18 blz. 18 blz. 18 blz. 18 blz. 20 blz. 21
Hoofdstuk 5. 5.1 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.2 5.2.1 5.2.2 5.2.3
Structuren Document structuren Algemeen DTD De kracht van DTD's De DTD van deze scriptie De onmacht van DTD's Data structuren XML-Schema Sleutels Namespaces
blz. 22 blz. 22 blz. 22 blz. 22 blz. 22 blz. 23 blz. 24 blz. 25 blz. 25 blz. 25 blz. 25
Hoofdstuk 6. 6.1 6.1.1 6.1.2 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3 6.3.1 6.3.2
Het mappen van Relationele Data naar XML Theorie Algemeen Vorm Praktijk Te nemen stappen Het mappen van veldtype Tekst Het mappen van veldtypen Datum en datumtijd Het mappen van veldtype Numeriek Het mappen van veldtype Boolean Het mappen van veldwaarden NULL Het mappen van veldtype Binair Namespace collisions in tabellen Namespace Oplossing Namespace probleem
blz. 26 blz. 26 blz. 26 blz. 26 blz. 26 blz. 26 blz. 27 blz. 27 blz. 27 blz. 27 blz. 27 blz. 27 blz. 28 blz. 28 blz. 28
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 2 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 7. 7.1 7.1.1 7.1.2 7.2 7.2.1 7.2.2 7.2.3 7.2.4
Toetsing aan praktijk Onderzoek Inleiding Analyse en oplossingsrichting Computationeel onderdeel Database implementatie XML implementatie algemeen Het genereren van XML uit de database Gebruikte componenten
blz. 29 blz. 29 blz. 29 blz. 29 blz. 31 blz. 31 blz. 33 blz. 33 blz. 35
Hoofdstuk 8. 8.1 8.1.1 8.1.2 8.2 8.2.1 8.2.2
Samenvatting en conclusie Samenvatting Completering Overzicht voor- en nadelen Conclusie Algemeen Kosten : baten
blz. 38 blz. 38 blz. 38 blz. 38 blz. 38 blz. 38 blz. 39
Geraadpleegde literatuur
blz. 40
Bijlage A.
Over deze scriptie
blz. 41
Bijlage B.
Het W3C
blz. 43
Bijlage C.
XML-Schema van deze scriptie
blz. 44
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 3 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Voorwoord Hierbij wil ik graag mijn ouders en Anneke bedanken voor hun geloof en vertrouwen in mij en mijn kunnen, en hun eindeloze ondersteuning op talloze gebieden. Daarnaast heb ik de gesprekken over studie, werk en leven met familie, vrienden, mede-studenten, collega's, docenten en medereizigers op de levensweg als prikkelend en stimulerend ervaren. Daarvoor ben ik hen dankbaar.
Arthur (J. H. J.) de Groot, augustus 2001.
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 4 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 1. Inleiding, onderzoeksvraag 1.1 Inleiding
1.1.1 Motivatie In veel situaties worden meerdere presentaties op basis van onderdelen van dezelfde informatie gemaakt omdat verschillende gebruikers(groepen) verschillende informatie- en presentatiebehoeften hebben. Zo biedt bijvoorbeeld een opleiding een curriculum aan en brengt daarover een studiegids in een papieren én elektronische versie voor studenten uit. Daarnaast onderhoudt de opleiding verschillende websites, met maar een deel van dezelfde informatie, als bijvoorbeeld een contactpersonenlijst of een vakkenlijst, die gericht zijn op verschillende gebruikersgroepen als (buitenlandse) studenten, aspirantstudenten of stage-biedende bedrijven. Ook de opleidingscommissie (OC) van de opleiding heeft aanvullende informatie voor studenten als studentenevaluaties en aansluitingen op vakken van andere opleidingen aan de collegegegevens gekoppeld en gepubliceerd op het intranet. Door het aanbieden van verschillende presentaties is het ook mogelijk om bepaalde informatiedelen gecontroleerd ter beschikking te stellen aan gebruikers. Zo zouden privé-telefoonnummers van docenten in een intranetversie wél en in een internetversie niet te raadplegen kunnen zijn. Waar er de wens bestaat om deze diverse informatiebehoeften te bedienen door verschillende presentaties voor verschillende media van delen van dezelfde informatie te bieden, loert het gevaar van een proliferatie van presentaties. Deze zouden elk afzonderlijk onderhouden moeten worden wat de inspanningen voor onderhoud en het gevaar van inconsistentie, dat wil zeggen niet-overeenkomende gegevens, vergroot. In het voorbeeld van de studiegids zou een wijziging in het telefoonnummer van een docent in alle bestaande presentaties doorgevoerd moeten worden. Een oplossing voor dit onderhouds- en inconsistentieprobleem zou kunnen liggen in het centraal en mediumneutraal opslaan en onderhouden van de benodigde gegevens en daaruit meerdere presentaties af te leiden. Deze oplossing stelt de volgende eisen: • Efficiënte, gestructureerde opslag van data en eenvoudig onderhoud en beheer daarvan, • Het kunnen maken van selecties op de opgeslagen data, • Het op eenvoudige wijze kunnen maken van verschillende presentaties van deze selecties. Er lijken in eerste instantie twee opties te bestaan die aan deze eisen voldoen. I. Het gebruiken van een database voor het opslaan en beheren van data en het afleiden van de gewenste presentatie op een selectie van deze data, II. Het gebruiken van een Extensible Markup Language(XML)-document voor het opslaan en onderhouden van data waarvanuit meerdere selecties en presentaties zijn af te leiden met behulp van stylesheets gemaakt in de Extensible Style Language (XSL) i en Extensible Style Language Transformation (XSLT) ii. In deze scriptie wil ik onderzoeken of het combineren van de sterke punten van Relationele Databases en XML-documenten een derde en betere optie kan vormen. Deze derde optie zou dan bestaan uit het combineren van opslag en beheer van gegevens middels een Relationele Database en het opnemen van een query-resultaat daaruit in een XML-document. Dit gegenereerde XML-document kan dan gecombineerd worden met andere, eventueel statische, XML-documenten. Uit dit gecombineerde XML-document kunnen verschillende presentaties gegenereerd worden met behulp van verschillende XSL-stylesheets. Bij opslag in deze relationele databases worden korte teksten in tabellen opgenomen waarbij ze zoveel mogelijk, naar gelang hun informatiestructuur, uitgesplitst worden. Op deze wijze ontstaat een fijnmazige datastructuur waaruit informatie inzichtelijk, eenvoudig en snel gefiltert kan worden zonder in de teksten zelf te hoeven zoeken. ihttp://www.w3c.org/tr/ iihttp://www.w3c.org/tr/ Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 5 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
1.2 Onderzoek
1.2.1 Onderzoeksvraag Dit brengt mij tot de volgende onderzoeksvraag: Kan de bovengeschetste combinatie van de inzet van Relationele databases en XML de bovengenoemde consistentie- en onderhoudsproblemen oplossen en zo ja hoe? Kernvraag hierbij is of XML krachtig genoeg is voor het weergeven van de Relationele databasestructuur. Het vermoeden hierbij is dat dit wel mogelijk is. 1.2.2 Onderzoeksverslag Voor het beantwoorden van deze vraag wordt er in deze scriptie verslag gedaan van mijn literatuuronderzoek naar de sterkten en zwakten van relationele databases en XML in het licht van het maken van verschillende consistente en onderhoudbare presentaties van gegevens uit één bron. Als XML krachtig genoeg is voor het weergeven van de relationele structuur en er daarmee een combinatie van relationele databases en XML in theorie mogelijk lijkt wil ik deze optie graag toetsen aan de praktijk door het toepassen van deze optie op de Studiegids Informatiekunde iii. Deze toetsing betreft een onderzoek naar de structuur van de huidige studiegids en het maken van een applicatie dat uit een relationele database een XML-studiegidsdocument genereert, dat XML-document combineert met een statisch XML-document tot één XML-document waarvanuit verschillende consistente presentaties te maken zijn. Deze scriptie doet verslag van deze toetsing. 1.2.3 Afbakening Deze scriptie beperkt zich nadrukkelijk tot het onderzoeken van éénrichtingsverkeer van relationeel opgeslagen data naar XML. De opslag van XML-structuren in Relationele databases valt buiten het bereik van deze scriptie. Nieuwe ontwikkelingen als 'echte' XML-databases worden ook buiten beschouwing gelaten omdat de ontwikkelingen op dit terrein nog hard door gaan en het vaak specifieke en dure software betreft.
iiiwww.let.rug.nl/faculty/study/guides00/alfa.pdf Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 6 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 2. XML, de Extensible Markup Language 2.1 Markup talen
2.1.1 Markup In de kontekst van deze scriptie betekent het woord markup het toevoegen van informatie aan een document. Markup in een document kan worden gebruikt om informatie over het document te onthullen dat op een bepaalde manier gerelateerd is aan de inhoud. Markup kan toegevoegd worden aan een document zodat de structuur van het document, zoals bijvoorbeeld een indeling in paragrafen of een koppenstructuur, beschreven wordt. Een ander gebruik van markup is het beschrijven hóe de inhoud van het document gepresenteerd moet worden, bijvoorbeeld 'vet' of 'cursief'. De voordelen van gestructureerde markup zijn de mogelijkheden voor automatische verwerking van documenten door computers, het mogelijk maken van eenvoudige tekstuitwisseling tussen verschillende systemen, het kunnen identificeren van onderdelen van een tekst en het opslaan en bevragen van documenten in een database. Daarbij biedt het loskoppelen van structuur en presentatie van een document mogelijkheden voor het op verschillende wijzen presenteren van de structuren en onderdelen van een document. Deze voordelen zijn niet te behalen met een document waarin de markup alleen op presentatie is gericht. Markup wordt in het algemeen toegevoegd in de vorm van tags. Een tag omsluit de inhoud waaraan het structuur/betekenis/opmaak wil verlenen. Een tag wordt meestal in de vorm van een open-tag en sluit-tag aangegeven als in
inhoud.
2.2 Afkomst en ontwikkeling
2.2.1 SGML XML komt voort uit Standard Generalized Markup Language (SGML) en is, net als SGML, een metataal; een taal voor het definiëren van andere talen. Elke door deze SGML-metataal gedefinieerde taal wordt een 'applicatie' van SGML genoemd. Dit maakt XML ook een SGML-applicatie. SGML iv komt voort uit onderzoek naar gestructureerde representaties van tekstdocumenten bij IBM aan het einde van de jaren 1960. IBM ontwierp de General Markup Language (GML), een voorloper van SGML en in 1978 ontwierp de American National Standards Institute (ANSI) haar eerste versie van SGML. De eerste standaard werd voorgesteld in 1983, een ontwerpstandaard kwam vrij in 1985, en de eerste standaard werd gepubliceerd in 1986. SGML wordt het meest gebruikt in organisaties die enorme hoeveelheden technische documenten verwerken zoals de auto-industrie, de luchtvaartindustrie, IBM, het V.S.-ministerie van Defensie, ruimtevaartindustrieën en uitgeverijen. SGML is moeilijk volledig te implementeren omdat de specificatie groot v en moeilijk te begrijpen is. Daarbij is de taal voor het opmaken van SGML (haar stylelanguage, Document Style Semantics and Specification Language (DSSSL))ook heel krachtig en moeilijk in gebruik. Vaak waren programma's wel in staat om documenten te verwerken voor een specifieke DTD vi, maar waren niet compatibel met SGML als geheel. ivISO 8879 standaard vongeveer hondervijftig bladzijden viZie hoofdstuk 4 Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 7 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
De pogingen om SGML over het Web aan te bieden, wat een grote wens was van de SGML-gemeenschap, faalden door gebrek aan breedondersteunde stylesheets, door te complexe software dat veroorzaakt werd door SGML's brede en krachtige opties, door gebrek aan SGML ondersteuning in de grote webbrowsers en door verschillende nivo's van overeenkomstigheid met de SGML-standaard onder SGML software. 2.2.2 HTML SGML's grootste succesapplicatie is HyperText Markup Language (HTML). HTML is oorspronkelijk ontworpen door Tim Berners-Lee bij le Conseil Européen pour la Recherche Nucléaire (CERN) in Genève en was in eerste opzet bedoeld als communicatiemiddel voor natuurkundigen. Berners-Lee definieerde HTML in SGML. HTML is vrijgegeven in december 1990 binnen CERN en kwam publiekelijk beschikbaar in de zomer van 1991. CERN en Berners-Lee hebben de specificaties vrijgegeven. De wijdverbreid gebruikte HTML heeft een gestructureerde markup; het is samengesteld uit geneste tags met de syntaxis
inhoud. Alhoewel HTML erg succesvol is voor het tonen van informatie op het web heeft het een aantal beperkingen: I. II.
III.
IV. V.
HTML is niet uitbreidbaar. Het is niet mogelijk om eigen tags te definiëren voor applicatiespecifieke situaties. De browserontwikkelaars en het W3C bepalen de beschikbare tags. HTML is alleen gericht op presentatie. HTML is een goede taal voor presenteren van data tenzij er veel aan precieze opmaak gevraagd wordt. HTML representeert een mengeling van de logische document structuur (titels, paragrafen et cetera) met presentatie tags (vet, uitlijning van afbeeldingen et cetera) in het document. Omdat bijna alle HTML-tags te maken hebben met de presentatie van informatie in een browser is HTML nutteloos voor andere algemene netwerk applicaties. HTML is meestal niet direct herbruikbaar. Het exporteren van documenten die in een tekstverwerker zijn gemaakt naar HTML vragen vaak nog nabewerking. Als het oorspronkelijke document veranderd moet de hele vertaalslag naar HTML opnieuw gemaakt worden. Data presentatie moet in structuurtermen worden uitgedrukt. De inhoud en de presentatie daarvan moeten van elkaar gescheiden worden, zodat de opmaak eenvoudig en consistent toegepast kan worden bij een update van het document. HTML biedt slechts één kijk op data. Het is moeilijk om HTML op zo'n wijze te gebruiken dat dezelfde informatie op verschillende wijze, afhankelijk van de aanvraag, gepresenteerd kan worden. HTML heeft weinig semantische structuur. De HTML-opmaak heeft betekenis voor de geoefende lezer maar er is binnen HTML, afgezien van opmaakinformatie, geen semantiek. HTML heeft weinig interne structuur. Zo is het bijvoorbeeld mogelijk om valide HTML onzin te schrijven als een
-tag binnen een -tag. Ook is het zoeken op het Internet naar bepaalde informatie bijzonder lastig omdat er geen aanduiding is van de betekenis van de data in HTML-bestanden (afgezien van de gebruikelijke META tags die vaak verkeerd gebruikt worden). Er moet niet op presentatie maar op betekenis van een stuk informatie opgemaakt worden zodat er dan wat mee gedaan kan worden. Dit betekent dat programma's er de semantiek niet uit kunnen halen. Tags als hebben wel een semantische betekenis maar dit lijkt door de fabrikanten vergeten te worden. Zo zijn er gedurende de ontwikkeling van HTML steeds meer tags ontwikkeld om opmaakproblemen op te lossen waarbij er steeds minder aandacht was voor de semantiek en is uiteindelijk beschouwd als nog een presentatieformaat voor tekst en afbeeldingen. Daarnaast zijn er door verschillende browserfabrikanten eigen tags toegevoegd die niet compatibel zijn met andere browsers waardoor bepaalde HTML-pagina's alleen door browsers van een bepaalde fabrikant, platform en schermresolutie correct weergegeven. Hierdoor kwamen de oorspronkelijke doelstellingen nog verder weg te liggen.
2.2.3 XML XML is een meta-taal voor zowel het beschrijven van markup-talen alswel een precieze syntaxis voor zo'n markup taal. Met XML is het mogelijk om een nieuwe taal specifiek voor het eigen doel of Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 8 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
applicatie te ontwerpen. Het ontwerpdoel van XML was mogelijk te maken om generieke SGML aan te bieden, te ontvangen en te verwerken op het Web op een manier zoals dat nu mogelijk is met HTML met zijn implementatiegemak. XML vult daarmee het gat tussen SGML en HTML. XML vii is ontwikkeld door de XML Working Group dat onder de auspiciën van het World Wide Web Consortium (W3C) in 1996 opgestart is. Het W3C houdt zich bezig met het ontwikkelen van specificaties voor Webtechnologieën om een zo hoog mogelijk bruikbaar- en uitwisselbaarheid te bereiken viii. XML is een W3C Recommendation ix en is gepubliceerd op 10 februari 1998 x. De XML Working Group bestaat uit ongeveer veertien bedrijven en organisaties die bezig zijn met het ontwikkelen van XML tools. Deze groep bevat onder andere Adobe, ArborText, DataChannel, Fuji Xerox, Hewlett-Packard, Inso, Isogen, Microsoft, Netscape, SoftQuad, Sun Microsystems en de Universiteit van Chicago, samen met Dan Connolly, een W3C vertegenwoordiger en James Clark, een onafhankelijke expert. De meeste leden van deze groep brengen grote ervaring met SGML in de ontwikkeling van XML in. XML heeft een kleiner en simpeler syntaxis dan SGML (XML is technisch gezien een subset) maar kreeg wel de belangrijkste eigenschappen van SGML (uitbreidbaarheid, structuur en validatie) mee. Hiermee is XML nog steeds krachtig maar is ook eenvoudiger te implementeren. XML is in het bijzonder geschikt om te dienen als een datarepresentatietechniek voor gebruik in heterogene omgevingen. Omdat XML gebaseerd is op een open industriestandaard bestaan er al veel implementaties van XML-parsers xi op veel platformen en in veel programmeertalen zoals op Unix en in C++ en Java. Daarnaast zijn er een heel aantal scripttalen als bijvoorbeeld PHP die toegang bieden tot de XML structuur. 2.2.4 XML tussen SGML en HTML Hoewel XML veel geschikter is voor gebruik op het Web dan SGML richt het zich niet op het vervangen van SGML. De kracht die SGML kan bieden kan nuttig zijn voor grote en complexe informatie repositories. XML richt zich ook niet op het vervangen van HTML. HTML is nog steeds bijzonder geschikt voor het maken van een eenvoudige presentatie op het Web, als presentatie tenminste het enige doel is. HTML zal waarschijnlijk op den duur omgevormd worden tot een XML DTD en één van de vele XML applicaties vormen. Afhankelijk van het doel van het document is SGML, HTML of XML de meest geschikte vorm om een document te markeren. Het markeren in XML biedt daarbij het toekennen van contekstuele betekenis aan data, flexibiliteit, presentatie-onafhankelijkheid en eenvoud in gebruik.
2.3 Het XML document
2.3.1 XML-structuren Elk XML-document heeft een boomstructuur. De boomstructuur van deze scriptie wordt deels beschreven in Figuur 1.
viihttp://www.w3.org/TR/REC-xml viiizie bijlage B ixzie bijlage B xDe tweede editie (met errata op eerste versie) is gepubliceerd op 6 oktober 2000. xiZie hoofdstuk 4 Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 9 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Figuur 1. XML-boomstructuur met knopen van deze scriptie Een XML-document heeft daarbij zowel een logische als een inhoudelijke structuur. Inhoudelijk bestaat het document uit eenheden die entiteiten genoemd worden. Deze entiteiten zijn de eigenlijke opslageenheden van gegevens. Een entiteit mag refereren aan andere entiteiten om hen op te nemen in het document. Op deze wijze kunnen andere XML-documenten in een ander XML-document worden opgenomen. Entiteiten bevatten of parsed of unparsed data. Parsed xii data bestaat uit karakters, dat deels bestaat uit karakter data en deels uit markup. De markup codeert een beschrijving van de logische structuur en de opslagstructuur van een document. XML biedt daarbij mogelijkheden voor het beperken van deze structuren. Logisch gezien bestaat het document uit declaraties, elementen, commentaar, karakterreferenties en processing instructions, die allemaal expliciet in het document aangeduid worden met expliciete markup. De logische en fysieke structuren moeten volgens de regels in de specificatie genest worden. 2.3.2 XML markup Er zijn zes typen markup die in een XML document te gebruiken zijn: I. commentaar, II. elementen, III. attributen, IV. entiteiten, V. processing instructions (PI's), VI. CDATA. Commentaar begint met en kan gebruikt worden voor toelichtingen op de tekst. Elementen worden gebruikt om eigen tags te maken en beschrijven over het algemeen de inhoud die ze insluiten. Er mogen niet, zoals in HTML, niet-afgesloten elementen voorkomen en moeten dus een sluittag als bijvoorbeeld hebben. XML ondersteunt ook lege elementen. Een leeg element kan geschreven worden als <scriptie>, maar ook als een enkele tag met een afsluitende slash <scriptie/>. Attributen zijn te gebruiken om een waarde aan een naam te koppelen. Een voorbeeld hiervan is de href-attribuut in <extlink href="http://www.let.rug.nl/~s0367672/scriptie/" /> die de waarde http://www.let.rug.nl/~s0367672/scriptie/ heeft (waarden altijd tussen dubbele quotes). XML bevat keywords en andere gereserveerde karakters die niet gewoon in een document gebruikt kunnen worden. Entititeiten kunnen worden gebruikt om dit te omzeilen. Daarbij worden entititeiten xiiPCDATA; Parsable Character Data Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 10 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
gebruikt voor het toevoegen van onprintbare karakters als kleurcodewaarden of Unicode karakters aan een document. Entities zijn er ook om te refereren aan herhalende tekst of om de inhoud van een extern bestand in te voegen. Processing instructions (PI's) worden gebruikt om data aan applicaties door te geven. Karakters die in een PI staan worden genegeerd. De speciale ?> syntaxis wijst een "PI doel" aan dat geïdentificeerd kan worden door een applicatie. Volgens de specificatie mogen applicaties geen doelen verwerken die ze niet herkennen. Als voorbeeld van een PI kan de PI in het XML-document in de navolgende paragraaf dienen. Het PI-doel hierin is de XML-stylesheet processor. Deze processor wordt aangeroepen met twee attribuut-waardeparen, namelijk een verwijzing naar een stylesheet dat gebruikt moet worden voor de omzetting en het type omzetting. CDATA (Character Data) is een andere methode om aan de XML-parser aan te geven gereserveerde karakters te negeren. Rekenkundige vergelijkingen bevatten bijvoorbeeld vaak < en > tekens die verwarrend kunnen zijn in verband met de markup van een element zoals bijvoorbeeld in 7]]>
2.3.3 XML voorbeeld Hieronder volgt een voorbeeld van een volledig XML-document met een XML-declaratie, Processing Instructions, attribuut-waardeparen, entiteiten-aanroep, elementen en commentaar. %charEntity; ]> <studiegids NULL="YES" BINARY="YES"> <docent> Prof. dr. G. M. George Welling 3635474 1311-43 <email>[email protected]
2.3.4 XML als een dataformaat In toenemende mate wordt XML, ondanks zijn oorspronkelijke documentgerichtheid, gebruikt als een dataformaat voor het opslaan en versturen van informatie op het internet.
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 11 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
XML maakt complexe datastructuren uitwisselbaar tussen verschillende programma's en verschillende platformen. Hoewel de basale taalstructuren hetzelfde zijn als bij 'gewone' documenten beschrijft XML de programmadata. Vóór de komst van XML moesten programmeurs bepalen in wat voor vorm data opgeslagen of verzonden moest worden. Meestal was deze data niet bedoeld om buiten het originele programma te gebruiken, zodat de programmeurs het in een voor hen zo gemakkelijk mogelijke vorm goten. Er zijn wel een paar standaard bestandsformaten ontstaan als Rich Text Format (RTF) en Comma Separated Values (CSV) maar gewoonlijk zijn ze alleen bedoeld voor een specifiek programma of zelfs een specifieke versie daarvan. Voordelen van XML: • Eenvoudige syntaxis • Ondersteuning voor het nesten van tags staan toe om geneste structuren weer te geven In het algemeen gesteld is XML niet erg geschikt voor opslag van grote documenten. Een aantal redenen daarvoor zijn: • De markup zelf (tags, attributen, entiteitsrefereties et cetera) neemt een behoorlijk deel van de grootte van een bestand in beslag. • Er zijn geen voorzieningen in het XML document zelf opgenomen om snel een knoop met een bepaalde waarde te kunnen vinden. • Er kan alleen maar tekstdata in een XML document worden opgeslagen. Er zijn wel manieren om dat te omzeilen door het gebruiken van externe entititeiten, XLink hrefs en base64 codering van binaire data. Maar ook daarmee bevat het document zelf nog steeds alleen maar tekst. 2.3.5 Het verwerken van XML-documenten De XML-specificatie biedt alleen de syntaxis en de grammatica voor XML. Om de inhoud van een XML-document te kunnen benaderen in een applicatie is een Application Programming Interface (API) nodig. Deze API biedt een standaardtoegangswijze waarmee documentonderdelen benaderd en verwijderd kunnen worden, en inhoud, attributen en stijl toegevoegd of bewerkt kunnen worden. Een API maakt gebruik van een parser. Een parser is een programma dat een selectie van karakters doorloopt en daaruit een structuur genereert. Het doel van een XML-parser is het omzetten van de tekst van een XML-bestand naar een set van hiërarchische structuren en het daarmee ontsluiten van de structuur en inhoud van het document voor de API. Dit omzetten van XML-tags naar een hiërarchie van 'knopen' is een relatief eenvoudige proces. De API kan dan in deze knopenstructuur knopen en inhoud aanroepen en bewerken. In Figuur 2 wordt de omzetting voor deze scriptie voorgesteld.
Figuur 2. Het omzetten van de documentstructuur naar een hiërarchische boom met knopen
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 12 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Er zijn twee algemeen aanvaardde en gebruikte API-methoden voor het benaderen van de inhoud van een XML-document. • De tree-based API, bijvoorbeeld de Document Object Model (DOM) API, • De event-based API, bijvoorbeeld de Simple API for XML (SAX) API. 2.3.6 De DOM-API Binnen het W3C is er een werkgroep bezig met het ontwikkelen van een standaard tree-based DOM API voor XML en HTML documenten. De DOM-API biedt een gestandaardiseerde, platform- en taalneutrale toegangswijze waarmee onderdelen benaderd en verwijderd kunnen worden, en inhoud, attributen en stijl toegevoegd of bewerkt kunnen worden. De DOM-parser bouwt een interne boomstructuur waar elementen ouder-kind relaties hebben met andere elementen. Gedurende de verwerkingstijd wordt er informatie over de structuur vastgehouden (state-full ) waardoor de gehele datastructuur steeds beschikbaar is tijdens het verwerken van een willekeurige knoop. Een applicatie kan door deze boomstructuur navigeren en bewerkingen uitvoeren maar de gehele structuur moet in het geheugen geplaatst blijven wat bij een XML-structuur met tienduizenden knopen een duur uitgangspunt is ten aanzien van processortijd en hardware. Nadelen van de DOM-API: • Groot beslag op systeembronen, zeker als het een groot document betreft, omdat de hele structuur in het geheugen opgebouwd wordt • Sommige applicaties willen hun eigen, en daarmee verschillende, interne boomstructuur bouwen waarmee het erg inefficiënt wordt om eerst een DOM-structuur te bouwen. De DOM-API is meest geschikt voor applicaties die veel herhaalde en willekeurige toegang (random access) tot bepaalde delen van een document moeten hebben. 2.3.7 De SAX-API SAX biedt een event-driven model dat goed ingezet kan worden als lichtgewicht tegenvoeter voor DOM. De parser raporteert gebeurtenissen (events) als het de verschillende delen van het document doorloopt, het hoeft daarom geen interne structuur op te bouwen, het vergeet elke verwerkte knoop (state-less ). Een SAX xiii parser is efficiënt, gebruikt weinig geheugencapaciteit en processortijd voor uitvoer van inhoud. Dat maakt het geschikt voor grote documenten. Als een XML document ontvangen wordt als een voortdurende stream dan is een event-driven model überhaupt de enige keuze. Hoe werkt een SAX-API? Als voorbeeld dient het volgende XML-document: <scriptie> Eindelijk klaar!
Het zou dan als volgt doorlopen worden: I. start van document II. start van element: scriptie III. start van element: alinea IV. karakters: Eindelijk klaar! V. einde van element: alinea VI. einde van element: scriptie VII. einde van document Elke parse-gebeurtenis (event) als bijvoorbeeld het begin en einde van een element kan aan de applicatie teruggestuurd worden (callback) waar de applicatie dan een bepaalde afhandeling (handler, aktie) aan koppelt. Dit maakt de SAX-parser dus event-based . xiiiOntwikkeld door David Megginson en anderen, mei 1995 Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 13 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Nadelen van de SAX-aanpak: • Geen Random Access tot het document Het is bijvoorbeeld bij het zoeken naar een element met een bepaalde waarde erg inefficiënt om een volledig document te moeten doorlopen.
2.4 XSL
2.4.1 XSL XSL staat voor de Extensible Style Language en is een W3C Candidate recommendation sinds 21 november 2000. XSL is een taal voor het uitdrukken van stylesheets. Een stylesheet beschrijft hoe documenten worden getoond op een scherm, geprint of misschien hoe ze worden uitgesproken. Het W3C heeft sinds haar ontstaan in 1994 het gebruik van stylesheets op het Web gepromoot. De W3C's Style Sheets Activity heeft twee W3C Recommendations opgeleverd namelijk Cascading Stylesheets 1 en Cascading Stylesheets 2 (CSS1 en CSS2) die, hoewel niet volledig, geïmplementeerd zijn in browsers. Door het toevoegen van stylesheets aan gestructureerde documenten op het Web zoals XML en HTML, kunnen auteurs en lezers de presentatie van document aanpassen zonder opoffering van apparaatonafhankelijkheid of tags toe te hoeven voegen. Een stylesheet is in feite een beschrijving van de wijze waarop een omgezet document gepresenteerd moet worden. Dit wordt gedaan door een specificatie van eigenschappen te koppelen aan de verschillende delen van het document. Een stylesheet kan daarbij optioneel de structuur van het input document omzetten in een andere structuur. XSL bestaat uit drie delen: • XSL Transformations (XSLT): een taal voor het omzetten van XML documenten, • De XML Path Language (XPath): een non-XML expressie taal die gebruikt wordt door XSLT om toegang te krijgen tot, of te verwijzen naar delen van een XML document. • Een XML vocabulaire voor het aanduiden van formatting semantics (XSL Formatting Objects)xiv Een XSL-stylesheet specificeert de presentatie van een klasse van XML documenten door te beschrijven hoe een instantie van die klasse wordt omgezet naar een XML document dat die formatting vocabulary gebruikt. xv XSL kan deze XML-data filteren en ook omzetten. Het toepassen van verschillende stylesheets op hetzelfde XML-bronbestand levert verschillende uitvoer op. Zo kan het omgezet worden naar bijvoorbeeld HTML, PostScript, PDF (als in deze scriptie)xvi, ASCII en XML.
xivXSL:FO is gebruikt voor het omzetten van deze XML-scriptie naar PDF. Zie Bijlage A. xvXSLT is een W3C recommendation sinds 16 November 1999. xviZie Bijlage A. Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 14 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 3. Relationele databases 3.1 Het Relationele Data Model
3.1.1 Inleiding In 1970 schreef, E. F. Codd, als lid van het Onderzoekslaboratorium van IBM in Californië, V.S., zijn beroemde artikel 'A Relational Model for Large Shared Data Banks' xvii waarin een aantal abstracte principes voor database-management werden aangevoerd. Deze principes kwamen voort uit onderdelen van de klassieke wiskunde, namelijk de verzamelingenleer, de relationele calculus en algebra. De terminologie die gebruikt wordt in de relationele database-theorie is afkomstig uit de verzamelingenleer. • tabellen voor Relations • rijen voor Tuples • kolommen voor Attributes In deze scriptie zullen de algemene benamingen gebruikt worden. Andere veel gebruikte begrippen in de databasewereld zijn redudantie en inconsistentie. Redudantie betekent dat er afgeleidde gegevens worden opgeslagen. Als bijvoorbeeld een geboortedatum van een persoon bekend is en ook de huidige datum dan is het opslaan van de leeftijd van die persoon redundant want afleidbaar. Voor vaak uitgevoerde bewerkingen kan dit soms wel wenselijk zijn in verband met performance maar het gevaar van inconsistentie ligt daar op de loer. Inconsistentie betekent in de databasewereld dat er interne tegenstrijdigheiden in gegevens bestaan. Een verdere definitie van het relationale model is later opgesteld door C. J. Date xviii.
3.1.2 Het relationele model Het relationele model bestaat uit drie componenten: • Een structurele component -- een verzameling tabellen, • Manipulatieve component dat bestaat uit een verzameling high-level bewerkingen die uitgevoerd worden op tabellen en ook weer tabellen produceren, • Een verzameling regels die de integriteit van de database moeten bewaken. Data structuren worden samengesteld uit twee componenten: • Entiteitstypen - de data groeperings types, • Relaties tussen de entiteitstypen. Entiteits typen zijn basistabellen die losjes gedefinieerd zijn als ongeordende verzamelingen van nul, één of meer rijen die elk bestaan uit één of meer ongeordende kolommen. Alle rijen moeten bestaan uit precies dezelfde set kolommen. Elke kolom is gebonden aan een domein. Dit is een verzameling van toegstane waarden waaruit de eigenlijke waarde wordt gehaald. Meer dan één kolom in de tabel mag zijn waarde uit het domein halen. Elke entry in een kolom bestaat uit één enkele waarde dat wil zeggen dat het bestaat uit precies één item. Elke rij in een tabel wordt uniek geïdentificeerd door een primaire sleutel (primary key) die is samengesteld uit één of meer kolommen. Dit impliceert dat een tabel geen duplicaatrijen mag bevatten. Een kolom of een groep van kolommen die een rij uniek kunnen identificeren worden kandidaatsleutels genoemd. Er kunnen voor een bepaalde tabel meerdere kandidaatsleutels voorkomen waaruit een keuze wordt gemaakt voor de primaire sleutel.De entiteits-integriteitsregel bepaalt dat geen onderdeel van de primaire sleutel NULL-waarden (lege waarde) mag bevatten. Een kolom of combinatie van kolommen dat overeenkomt met de primaire sleutel van een andere tabel xviizie de geraadpleegde literatuur xviiizie de geraadpleegde literatuur Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 15 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
wordt een verwijzende sleutel genoemd (foreign key). Deze relationele aanpak dwingt de ontwerper tot striktheid met betrekking tot het toekennen van unieke identifiers aan tabelinhoud omdat dit de enige toegestane manier van koppelen van tabellen is. De referentiële integriteitsregel van het model bepaalt dat er voor elke verwijzende sleutel in een tabel een overeenkomende primaire sleutel in een andere tabel in de database moet voorkomen. Er kunnen twee soorten tabellen in een SQL-schema gedefinieerd worden; Basistabellen en Views. Deze worden named relations genoemd. Andere tabellen (unnamed relations) kunnen hieruit worden afgeleid met relationele bewerkingen als joins en projections. Alle tabellen zijn logische entiteiten. Hiervan bestaan alleen de basistabellen fysiek in die zin dat alleen zij records fysiek opslaan. De gebruiker hoeft geen kennis te hebben van eerder gedefinieerde toegangspaden tot de data. Views en de resultaten van alle bewerkingen op tabellen (unnamed relations) zijn tabellen die bestaan als logische definities, in termen van een view definitie, of een [SELECT .. FROM .. WHERE .. ORDER BY] volgorde. Een nuttig aspect van het relationele model is dat het de datadefinitie zelf kan representeren in tabelformaat. Beschrijvingen van data kunnen worden aangemaakt en bekeken met gebruikmaking van uitbreidingen op SQL. Subsets van de database kunnen worden gedefinieerd als views (virtuele tabellen) door relationele bewerkingen op de data. Er kan zo op eenvoudige, veilige wijze toegang tot bepaalde tabellen, kolommen en combinaties daarvan worden gegeven. View-tabellen worden niet permanent opgeslagen maar opnieuw aangemaakt op de laatste versie van de database door de definitie van de view opnieuw uit te voeren. 3.1.3 Relationele algebra De relationele algebra stelt dat bewerkingen op tabellen een nieuwe tabel met de gevraagde gegevens oplevert, net zoals bijvoorbeeld een optelling van getallen een nieuw getal oplevert. Indien nodig worden er tijdelijke 'tussen'-tabellen aangemaakt met gegevens waaruit uiteindelijk de tabel met de gevraagde gegevens samengesteld wordt. In de relationele algebra zijn acht bewerkingen gedefinieerd (afkomstig uit de verzamelingenleer) waarvan SELECT , PROJECT en JOIN de belangrijkste zijn. Het SELECT commando neemt een horizontale subset oftewel alleen die rijen uit een tabel die voldoen aan de gestelde criteria, in de antwoordtabel op. Het PROJECT commando neemt een verticale subset oftewel kolommen uit een tabel die voldoen aan de gestelde criteria, in de antwoordtabel op. Het JOIN commando stelt het Relationele DataBase Management Systeem (RDBMS, zie volgende paragraaf) in staat om gegevens uit meerder tabellen met elkaar te combineren op basis van een gemeenschappelijke attribuut. Er wordt een nieuwe tabel gemaakt die bestaat uit de kolommen van beide tabellen die samengevoegd zijn. De rijen in deze nieuwe tabel zullen bestaan uit de concatenatie van een rij uit de eerste tabel en een rij uit de tweede tabel die overeenkomen met het gemeenschappelijke attribuut.
3.2 RDBMS
3.2.1 Inleiding Een Relationeel Database Management System (RDBMS) wordt gebruikt voor opslag, beheer en bevraging van data en is als het ware een schil tussen de gebruiker en de fysieke opslag van data. Bijna elke databasefabrikant levert bij zijn databaseprodukt een RDBMS mee. Er worden in het algemeen een aantal eisen aan een RDBMS gesteld: I. Een RDBMS moet gebruikers in staat stellen om data op te slaan, op te roepen en bij te werken, II. Een RDBMS moet gebruikers een catalogus bieden waarin data-eenheden worden beschreven. Een catalogus is een verzameling van gerelateerde bestanden. III. Een RDBMS moet de mogelijkheid bieden om verschillende gebruikers tegelijkertijd een database te laten bijwerken, IV. Een RDBMS moet mogelijkheden bieden voor herstel van een database als deze is beschadigd, Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 16 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
V. VI.
Een RDBMS moet mogelijkheden bieden voor het beperken van toegang tot een database, Een RDBMS moet (integriteit)regels bieden die door data in de database en bewerkingen daarop, gevolgd moeten worden, VII. Een RDBMS moet data-onafhankelijk zijn; als de structuur van een database veranderd hoeft een databewerking niet veranderd te worden, VIII. Een RDBMS moet een aantal hulpprogramma's bieden.
3.3 Rapport generatoren
3.3.1 Inleiding Een veel gebruikt RDBMS-hulpprogramma is een 'rapport generator' (report generator). In een rapport wordt van tevoren een selectie van data en de lay-out van het resultaat bepaald. Dit rapport kan steeds opnieuw uitgevoerd worden. Als voorbeeld kan een omzetrapportage dienen die eenvoudigweg elke week uitgevoerd wordt.
Figuur 3. Het rapportage-proces In Figuur 6 wordt het rapportageproces geïllustreerd. Hierin is • Data toegang het ophalen van een tevoren bepaalde selectie van data uit een databasetabel, tekstbestand of een andere databron dat data gestructureerd in rijen en velden opslaat. • Data verwerking het berekenen van tussentijdse resultaten op basis van een selectie van de data en veranderingen op de layout van het rapport als het gegenereert gaat worden. • De Rapport layout de component dat het uiterlijk van het rapport bepaalt. • Rapport output de component dat de precieze inhoud van elke pagina van het rapport beschrijft. 3.3.2 Geschiktheid voor onderzoeksdoel Deze aanpak is minder geschikt voor het oplossen van de onderzochte problematiek omdat I. het vooral is gericht op numerieke bewerkingen als in financiële of productie-rapportages en niet op tekst II. De uitvoermogelijkheden zijn vaak beperkt tot het eigen formaat en HTML dat bewaart en op een webserver geplaatst moet worden (eventueel ook nog adrestickers) III. Meestal platformafhankelijk is IV. Te weinig flexibel (soms zijn nog zogenaamde runtime parameters mee te geven waardoor de gebruiker nog een aantal zaken, als lay-out kan bepalen aan het rapport).
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 17 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 4. Het onderzoeksgebied 4.1 Twee werelden
4.1.1 Het Web Het World Wide Web (WWW) biedt een eenvoudige en universele standaard voor het uitwisselen van informatie. Het centrale principe hierbij is het in stukken knippen van deze informatie in eenheden die benoemt en verzonden kunnen worden. Vandaag de dag is deze informatie-eenheid over het algemeen een bestand dat gemaakt wordt door een gebruiker en gedeeld wordt met andere gebruikers en systemen door dit bestand beschikbaar te stellen via een Uniform Resource Locator (URL). Informatie heeft echter structuur. Het succes van het WWW is afkomstig van het succes van HyperText Markup Language (HTML), een manier om tekst te structureren voor visuele presentatie. HTML beschrijft zowel een interne structuur (de opmaak en het formaat van de tekst) als een externe structuur door middel van referenties naar andere documenten middels hyperlinks. De invoering van HyperText Transport Protocol (HTTP) als een transportstandaard en het gebruik van HTML voor het opstellen van documenten zijn de sleutels tot het huidige succes van het WWW. Het Web heeft tot dusver het volgende gebracht: • Een wereldwijde structuur en een set standaarden die documentuitwisseling ondersteunen • Een presentatieformaat voor hypertekst • Een nieuw formaat voor het uitwisselen van gestructureerde data; XML 4.1.2 Relationele databases De lange ontwikkeling van de relationele databases heeft het volgende gebracht: • Opslagtechnieken en query-talen die efficiënt toegang geven tot grote hoeveelheden zeer gestructureerde data • Datamodellen en methoden voor het structureren van data • Methoden voor het onderhouden van de consistentie en integriteit van data
4.2 Naar elkaar toe
4.2.1 Integratie In de afgelopen jaren is de databasewereld steeds meer naar de webwereld toegegroeid. Denk hierbij bijvoorbeeld aan HTML-exportmogelijkheden die veel hedendaagse RDBMS's bieden of aan een RDBMS dat via een webinterface te bedienen is. Volgens sommige bronnen worden meer dan 75% van alle huidige Webpagina's gegenereerd uit data afkomstig van onderliggende databases. Dit wordt mede veroorzaakt door het feit dat veel bedrijfsgegevens in databases zijn opgeslagen. Voor presentatie van deze gegevens wordt deze data veelal omgezet naar HTML door server-side applicaties (zie Figuur 4). Hierbij valt bijvoorbeeld te denken aan server-side Common Gateway Interface (CGI)-applicaties in Perl, PHP of C.
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 18 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Figuur 4. CGI, voor iedere presentatie een apart programma Aan serverzijde worden gegevens uit de database al omgezet in het gewenste presentatieformaat en serverside aangeboden.
Figuur 5. Vanuit één XML-document verschillende presentaties door verschillende stylesheets Een toekomstig alternatief is het omzetten van deze data in XML en het selecteren van een stylesheet om de eigenlijke visuele omzetting aan de clients over te laten (zie Figuur 5). Dit is pas mogelijk als browsers betere XML/XSL-ondersteuning gaan bieden.
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 19 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Figuur 6. Vanuit één XML-document verschillende presentaties door verschillende stylesheets Een alternatief waar nu goed mee te werken is, is het aanbieden aan serverzijde van 'kant en klare' uit XML-document gegenereerde bestanden (zie Figuur 6). Voordelen van het genereren van HTML/PDF/WML-documenten uit XML-documenten met behulp van stylesheets ten opzichte van uit database gegenereerde HTML/PDF/WML-documenten. • Betere modelering van het ontwerp. In de huidige webapplicaties zijn lay-out, database-aspecten en documentlogica teveel met elkaar verweven. Deze applicaties zijn vaak moeilijk onderhoudbaar en uitbreidbaar. Dit zijn bijvoorbeeld server-side CGI-applicaties in Perl, PHP of C waarin HTML-tags, SQL-statements en programmacode gemengd staan. • Het ondersteunen van meerdere clients. Door het genereren van stylesheets voor individuele client software (bijvoorbeeld browsers of Personal Digital Assistants (PDA, handheld) of voor afdrukformaten als Portable Document Format (PDF) of Rich Text Format (RTF) wordt de presentatie voor elk device gescheiden van inhoud. • Load balancing. De benodigde computerkracht kan verdeeld worden tussen server en clients. • Lagere bandbreedte nodig. De voor HTML-documenten benodigde bandbreedte is vaak groter dan voor XML-documenten samen met stylesheets. Nadelen van het genereren van HTML/PDF/WML-documenten uit XML-documenten met behulp van stylesheets ten opzichte van uit database gegenereerde HTML/PDF/WML-documenten. • Het vraagt van de gebruikers die met de huidige methoden goed uit de voeten kunnen het leren van weer een nieuwe methode. 4.2.2 XML-documenttypen XML-documenten vallen ruwweg uiteen in twee typen; de datagerichte en de documentgerichte. Datagerichte documenten worden gekarakteriseert door een regelmatige structuur, fijnkorrelige data en weinig tot geen gemengde inhoud (kindelementen én karakterdata in één element) bevatten. De volgorde van de elementen in het document is vaak niet belangrijk. Voorbeelden van datagerichte documenten zijn verkooporders, vluchtschema's et cetera. XML kan hiervoor ingezet worden als datatransportformaat voor automatische verwerking. Een voorbeeld hiervan is het XML-fragment hieronder. 2 Algoritmiek
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 20 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
<stupu>4 1
4.2.3 Documentgerichte documenten Documentgerichte documenten worden vaak gekarakteriseerd door een onregelmatige structuur, grofkorrelige data en veel gemengde inhoud. Ze zijn meestal ontworpen voor verwerking door mensen. De volgorde van de elementen is daarom vaak belangrijk. Voorbeelden zijn boeken, advertenties et cetera. Het XML-fragment hieronder is een documentgericht document. <para titel="HET VAKGEBIED"> <sectie titel="Het vakgebied Informatiekunde (alfa–informatica)"> Informatieverwerking en beheersing worden steeds belangrijker in onze samenleving. De computer speelt daarin een onmisbare rol. In de informatiekunde bestudeert men de toepassing van informatietechnologie in de alfa en gammawetenschappen. Informatietechnologische toepassingen zijn hier langzaam en laat op gang gekomen, maar bevinden zich momenteel in een stroomversnelling. Informatiekunde binnen de Letteren bouwt voort enerzijds op onderzoek naar natuurlijke taalverwerking door de computer en anderzijds op toepassing van de informatica op historisch–cultureel onderzoek. De relevantie van technieken die in de informatiekunde aan bod komen, is aanzienlijk toegenomen met de voortschrijdende informatisering van de samenleving. Het gaat daarbij onder meer om technieken op het gebied van elektronische teksten, het intelligent zoeken in teksten, en het combineren van tekst met (bewegend) beeld en geluid. <sectie titel="Geschiedenis van het vakgebied en de opleiding Informatiekunde in Groningen">
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 21 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 5. Structuren 5.1 Document structuren
5.1.1 Algemeen Om net als in relationele databases structuur en inhoud van een document aan integriteitsregels te laten voldoen moet er een mechanisme zijn dat structuur en inhoud van een document bepaalt en toetst aan het gewenste model. Bij XML zijn die mechanismen DTD's en Schema's. 5.1.2 DTD Een Document Type Definition (DTD) beschrijft de toegestane elementen in een XML document en de structuur van de elementen. Beter gezegd; de DTD beschrijft de grammatica van een bepaalde klasse van XML documenten. Een XML document dat voldoet aan de regels in de XML specificatie xix wordt well formed genoemd. Bovenop dit well formed zijn, kan een XML document optioneel ook nog valid zijn. Een gevalideerd (valid) XML document moet een DTD bevatten, en de grammatica van het document moet zich conformeren aan de in de DTD beschreven structuur. Het proces om een XML document aan de grammatica in de bijbehorende DTD te toetsen wordt in het algemeen aangeduid met de term 'valideren'. Een XML document kán maar hoeft niet geassocieerd te zijn met een DTD. Het zal duidelijk zijn dat een document niet gevalideerd kan worden als er geen DTD aan gekoppeld is. Een DTD kan fysiek opgenomen zijn in het document of er kan verwezen worden naar een externe lokatie. Als er aan een externe DTD gerefereerd wordt hoeft deze niet op dezelfde locatie te staan als het XML document. Het probleem met interne DTD's is dat ze niet herbruikt kunnen worden. Meestal is het daarom handiger om DTD's in aparte bestanden te bewaren waaraan gerefereerd kan worden door verschillende documenten; de externe DTD. In deze scriptie is een externe DTD gebruikt door middel van de volgende aanroep: %charEntity; SYSTEM "D:\fop18\scriptie2.dtd" ]>
De 'DOCTYPE' aanroep benoemt het document type en is ook het rootelement van het document. Het SYSTEM attribuut vertelt de XML processor dat het de DTD van de daaropvolgende URL moet halen. Deze attribuut kan ook PUBLIC gemaakt worden. Dit is een gereserveerde waarde voor algemene DTD's. Het zou bijvoorbeel erg inefficiënt zijn om elke keer dat een HTML-document wordt opgevraagt ook de bijbehorende DTD op te vragen op de W3C website als in het volgende voorbeeld: Door het document type als PUBLIC te declareren wordt de XML (bij dit voorbeeld de HTML-) processor te kennen gegeven dat de applicatiesoftware interne kennis heeft van de DTD. 5.1.3 De kracht van DTD's Een DTD kan het type inhoud van de elementen bepalen, hoevaak een subelement mag voorkomen en of een subelement verplicht danwel optioneel is. DTD's staan je ook toe om een standaardwaarde aan een attribuut toe te kennen. Bovendien is het ook mogelijk om entiteitsvervanging xx uit te xixwww.w3c.org/xml Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 22 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
voeren met behulp van een DTD. 5.1.4 De DTD van deze scriptie <stupu> <entreevak> <subfase> <studiemat>
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 34 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
<email> <docent>
Het resultaat van de bovenstaande query is hierbij in een XML-document opgenomen. Op het hoogste elementnivo, het zogenaamde root-element, is het element gedefinieerd. Het begint en sluit het datadeel van het XML-document. Dit root-element is in de database-hiërarchie te vergelijken met een tabel. In de kop hiervan zijn twee Processing Instructions xxviii opgenomen die verwijzen naar een XSL-stylesheet en de Cocoon-formatterbewerking dat het XML-document uiteindelijk in de gewenste presentatie gaat omzetten. Er is ook een verwijzing naar een externe entiteit opgenomen waarin het algemene deel van de studiegids in XML-vorm is opgeslagen. Met deze verwijzing wordt het externe document opgenomen in het aanroepende document. Hiërarchisch gezien valt het element onder en binnen het element . In de database-hiërarchie is dit element te vergelijken met een record in een tabel. In dit geval is het de omhulling van de eerste resultaatrij van de uitgevoerde query. Daaronder zijn elementen opgenomen met de eigenlijke data die hun inhoud in CDATA (Character Data) markering verpakken in verband met mogelijke karaktertekens in deze elementen die in XML een bijzondere betekenis kunnen hebben. De namen die deze data-elementen omsluiten worden overgenomen van de kolomnamen van de in de query opgenomen tabelkolommen. Deze elementen zijn wat betreft database-hiërarchie te vergelijken met de velden in een rij in een tabel. 7.2.4 Gebruikte componenten De applicatie gebruikt PHP4 xxix. PHP is een serverside scripttaal. Hiermee is het mogelijk om scripts in HTML onder te brengen. Deze scripts worden met sluittags gescheiden van HTML. Onder Win32 kan PHP als CGI-module onder verschillende webservers dienen. De xxviiizie Hoofdstuk 2.3.2 xxixwww.php.net/ Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 35 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
PHP-scripts worden geparst, verwerkt en in een HTML-pagina meegestuurd naar de client (een browser). PHP heeft een zeer uitgebreidde functiebibliotheek waaronder XML-parserfuncties (SAX-model). PHP ondersteunt ook belangrijke programmeerconstructies als multi-dimensionele arrays, serialization en, zij het beperkt, Object Oriented Programming (OOP). De webserver is van Apache, versie 1.3.17 xxx. Ik heb hiervoor gekozen omdat het PHP goed ondersteunt, stabiel, betrouwbaar, OpenSource software en eenvoudig in gebruik is. Verder is Cocoon xxxi aan Apache te koppelen. Cocoon is een Java-servlet dat aan de hand van aanduidingen in het XML-document de juiste XML-formatter applicatie kan aanroepen. Zo'n aanduiding ziet er bijvoorbeeld zo uit: <xsl:processing-instruction name="cocoon-format">type="text/xslfo". Cocoon filtert deze instructie eruit en roept de betreffende formatter aan, in dit geval de XSL-Formatting Objects formatter die een PDF-stream genereert. Deze stream kan dan bijvoorbeeld de PDF-plugin in MSIE5 aanroepen waarna het PDF-bestand in een browservenster getoond wordt. Cocoon werkt pas als Apache's Jserv en Sun's Java Servlet Development Kit zijn geïnstalleerd.
Figuur 11. Samenwerking tussen PHP, Apache en MySQL. Communicatie over TCP/IP Het samenspel tussen de componenten is weergegeven in figuur 11. Mod_php, mod_perl, mod_ssl zijn modules die geïnstalleerd zijn op de Apache webserver en daarvan de functionaliteit vergroten met PHP, Perl en Secure Socket Layer (SSL) functiebibliotheken.
xxxwww.apache.org xxxixml.apache.org Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 36 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Figuur 12. De pagina-aanvraag route In Figuur 12 is de route van een aanvraag vanuit een browser van een HTML/PHP-pagina op een webserver te volgen. I. Request vanuit de browser naar de webserver II. De PHP-interpreter filtert de PHP instructies eruit. Deze bevat de SQL-queries en een verwijzing naar een XSL-stylesheet III. De queries worden doorgespeeld aan de databaseserver waarna het resultaat door PHP wordt omgezet in een XML-document IV. Dit XML-bestand met verwijzing naar een XSL-stylesheet wordt door de formatter Cocoon verwerkt tot een afgeleidde presentatie V. Dit wordt door de Java servlet-engine JServ verder verwerkt waarna het geheel teruggestuurd wordt naar de webserver die het terugstuurt naar de client (browser)
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 37 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Hoofdstuk 8. Samenvatting en conclusie 8.1 Samenvatting
8.1.1 Completering Databases en XML bieden completerende functionaliteit voor het opslaan van data. Databases slaan data op gericht op consistentie en efficiënte retrieval, terwijl XML een eenvoudige informatie uitwisselingbaarheid tussen applicaties en gestructureerde opslag biedt. Om de voordelen van XML's eigenschappen te gebruiken is het mogelijk om databasetabellen in XML documenten om te zetten. Dan is het ook mogelijk om het XML gereedschap voor deze documenten te gebruiken voor verdere verwerking. Zo kunnen XML documenten dan gepresenteerd worden als HTML pagina's met behulp van XSLT stylesheets, kunnen doorzocht worden met op XML-gebaseerde query talen als de Extensible Query Language (XQL), kunnen ze gebruikt worden als data-uitwissel formaat et cetera. 8.1.2 Overzicht voor- en nadelen De voordelen van het gebruiken van XML: • Inhoud is vrij van opmaak gemaakt en is daarom voor veel doeleinden weer opnieuw te gebruiken. • Voor systemen die niet compatibel met elkaar zijn vormt XML een systeemneutraal tussenformaat voor het transporteren van data. • XML kan veel verschillende soorten data aan; tekst, beeld en geluid • Is door de gebruiker uit te breiden. De voordelen van het gebruiken van relationele databases: • efficiënte opslag • snelheid door indexen • beveiliging • transacties (commit en roll-back ) • data integriteit • multi-user toegang • triggers • een bovenop de database werkende DataBase Management Systeem is een uitstekende beheeromgeving voor relationele data • bekendheid. Een groot nadeel van XML-tagged data is het beheer ervan. Zolang het XML-document niet te groot is kan het goed onderhouden worden met een gewone editor. Het statische studiegids XML-document is nog niet te groot maar een scriptie in XML is eigenlijk al te groot om het zonder een speciale XML-editor te doen.
8.2 Conclusie
8.2.1 Algemeen XML is sterk genoeg om de structuur en data van een relationele database te kunnen weergeven. Als het resultaat van een query, wat zelf weer een tabel vormt, wordt omgezet naar XML zijn alle velden goed te mappen. Ook zijn er dan geen problemen met primaire- en verwijzende sleutels. XML wordt hier niet gebruikt als een zelfstandig data-opslag maar alleen als 'handig' tussenformaat tussen een relationele database en de verschillende presentatiemogelijkheden van een XML-document.
De te kiezen aanpak (Relationele Database of XML) is afhankelijk van het doel. In het geval van de Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 38 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Alfa-Informatica studiegids die in deze scriptie als case beschreven is, zijn de voordelen van een Relationele Database met haar Relationele Database Management Systeem (RDBMS) gecombineerd met de voordelen van de vrijheden van XML de sterkste oplossing. 8.2.2 Kosten : baten Kostbare inspanningen liggen vooral op het gebied van: • het schrijven van stylesheets, • het inrichten van een server, • het opzetten van een database, • het beheer van de database, • het bij belangrijke (ter beoordeling) mutaties van de data in de database opnieuw genereren van het XML-document en afgeleidde representaties. Alle gebruikte componenten zijn Opensource software. Deze software is goed en gratis te gebruiken. Er hoeft niet voor elke presentatietoepassing een apart programma geschreven te worden zoals bij CGI. Onderhoud van de data in de database is eenvoudig door een webtool als PHPMyAdmin te realiseren De baten ten opzichte van het oude systeem van naast elkaar bestaande presentaties zijn afhankelijk van het aantal en soort presentaties dat voorheen afzonderlijk onderhouden moest worden. Inspanningen voor onderhoud, beheer en voorkoming van inconsistentie kunnen waarschijnlijk worden verminderd wat kostensparend moet werken. Alleen een daadwerkelijke implementatie zal hier een duidelijk licht op kunnen werpen.
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 39 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Geraadpleegde literatuur
Abiteboul S., Buneman P., Suciu D. , Data on the Web, From Relations to Semistructured Data and XML . San Fransisco, 2000 .
Brookshear J. G. , Computer Science, an overview . Menlo Park, 1994 .
Date C. J. , An Introduction to Database Systems . Menlo Park, 1990 .
El Maitre J., Murisasco E., Rolbert M. , From Annotated Corpora to Databases: the SgmlQL Language . Stanford, 1998 .
Haan, de L. , Leerboek Oracle SQL .Schoonhoven, 2000 .
Harold E. R. , XML-Bible . 2000 .
Herwijnen, van E. , Practical SGML (Second edition) .Dordrecht, 1994 .
Koppelmans M., Laar, van de B. , Leerboek Oracle Report Builder .Schoonhoven, 2000 .
Lemmen K. A. M. , Gegevensmodellering en Gegevensbanken . Oldemarkt, 1993 .
Leventhal M., Lewis D., Fuchs M. , Designing XML Internet Applications . Upper Saddle River, 1998 .
McLaughlin B. , Java and XML . 2000 .
Renkema J. , Schrijfwijzer .Den Haag, 1987 .
Turau V. , Making legacy data accessible for XML applications . Wiesbaden, 1999 .
Williams K., Brundage M. e.a. , Professional XML Databases .2001 .
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 40 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Bijlage A. Over deze scriptie Deze scriptie is geheel in XML geschreven waarbij een eigen tagset is gedefinieerd. Daarmee kan de presentatie van de inhoud eenvoudig aangepast worden. XSL-Formatting Objects xxxii is nu gebruikt om de tekstinhoud te presenteren in het Portable Document Format dat ontwikkeld is door Adobe software xxxiii. Deze omzetting is gekozen omdat er voor alle platforms readers beschikbaar zijn, het paginering mogelijk maakt en goed is te printen met behoud van opmaakkwaliteit. Voor deze omzetting van het XML-document naar XSL-FO heb ik een XSL-stylesheet geschreven (19 Kbyte). Als editor is HTML-Kit gebruikt omdat het hierin mogelijk is eigen tags te maken en tekst mee te markeren. Dit sluit naadloos aan bij de gedachte van XML. De volgende tagset is gebruikt: Documentstructuur: <scriptie> hoofddocument <scriptietitel> documentdeel documentdeel documentdeel voor elk documentdeel <sectie> documentdeel <paragraaf> documentdeel documentdeel <extlink href=""> externe link interne link container verwijzing naar afbeelding bijschrift bij afbeelding container container boektitel auteur van boek <jaar> jaar van uitgifte documentdeel geordende lijst - lijstitem ongeordende lijst voetnoot
xxxiiwww.w3.org/1999/XSL/Format xxxiiiwww.adobe.com/acrobat Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 41 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Opmaakmarkering: code vet <cursief> cursief onderstreping
In deze scriptie zijn de volgende kleurcoderingen in de teksten aangehouden: I. Blauw voor hyperlinks, zowel interne als externe (aanklikbaar in de elektronische versie van dit document) II. Rood voor voetnootnummering en voetnoten III. Grijsblauw voor code IV. Zwart voor tekst
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 42 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Bijlage B. Het W3C Het World Wide Web-Consortium (W3C) xxxiv fungeert als een initiërend, sturend, organiserend en stimulerend orgaan dat tot algemeen geaccepteerde internetstandaarden probeert te komen. Zij doet dit in werkgroepen onder andere voor XML (een standaard sinds 1998) en afgeleidde (aankomende) standaarden als XSL, Formatting Objects, XSLT, XPath, XQL, Schema et cetera. De W3C-leden zijn afkomstig uit belangengroepen, bedrijven en universiteiten. De W3C Werkgroepen zijn in het algemeen gemachtigd tot het produceren van documenten als bijvoorbeeld technische specificaties, richtlijnen et cetera. De W3C Werkgroepen doorlopen daarbij een proces waarbij een document wordt gereviewed en herschreven totdat het als volwassen beschouwd wordt door de leden en directie om gepubliceerd te worden als een Recommendation. De werkgroep onderscheidt voor elk project een aantal statussen (de zogenaamde Recommendation Track) voordat het tot een standaard verklaard wordt . I. Working Draft II. Last Call Working Draft III. Requests IV. Candidate Recommendation V. Proposed Recommendation VI. Recommendation VII. Standard
xxxivhttp://www.w3c.org Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 43 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
Bijlage C. XML-Schema van deze scriptie <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified"> <xsd:element name="alinea"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="gelijst"/> <xsd:element ref="cursief"/> <xsd:element ref="voetnoot"/> <xsd:element ref="vet"/> <xsd:element ref="code"/> <xsd:element ref="figuur"/> <xsd:element ref="alinea"/> <xsd:element ref="onlijst"/> <xsd:element ref="onderstreept"/> <xsd:element ref="extlink"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="bijlage"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element ref="alinea" maxOccurs="unbounded"/> <xsd:element name="bijschrift" type="xsd:string"/> <xsd:element name="boek"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="auteur"/> <xsd:element ref="btitel"/> <xsd:element ref="jaar"/>
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 44 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
<xsd:element name="boeklijst"> <xsd:complexType> <xsd:sequence> <xsd:element ref="boek" maxOccurs="unbounded"/> <xsd:element name="btitel" type="xsd:string"/> <xsd:element name="code"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="onderstreept"/> <xsd:element name="cursief"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="vet"/> <xsd:element name="extlink"> <xsd:complexType> <xsd:simpleContent> <xsd:restriction base="xsd:string"> <xsd:attribute name="href" type="xsd:uriReference" use="required"/> <xsd:element name="figuur"> <xsd:complexType> <xsd:sequence> <xsd:element ref="plaatje"/> <xsd:element ref="bijschrift"/>
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 45 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
<xsd:element name="gelijst"> <xsd:complexType> <xsd:sequence> <xsd:element ref="item" maxOccurs="unbounded"/> <xsd:element name="hoofdstuk"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element ref="sectie" maxOccurs="unbounded"/> <xsd:element name="item"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cursief"/> <xsd:element ref="vet"/> <xsd:element name="jaar" type="xsd:string"/> <xsd:element name="onderstreept" type="xsd:string"/> <xsd:element name="onlijst"> <xsd:complexType> <xsd:sequence> <xsd:element ref="item" maxOccurs="unbounded"/> <xsd:element name="para"> <xsd:complexType> <xsd:sequence>
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 46 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
<xsd:element ref="titel"/> <xsd:element ref="alinea" maxOccurs="unbounded"/> <xsd:element name="plaatje"> <xsd:complexType> <xsd:attribute name="filenaam" type="xsd:string" use="required"/> <xsd:attribute name="hoogte" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="200pt"/> <xsd:enumeration value="300pt"/> <xsd:attribute name="breedte" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="300pt"/> <xsd:enumeration value="400pt"/> <xsd:element name="scriptie"> <xsd:complexType> <xsd:sequence> <xsd:element ref="scriptietitel"/> <xsd:element ref="voorwoord"/> <xsd:element ref="hoofdstuk" maxOccurs="unbounded"/> <xsd:element ref="boeklijst"/> <xsd:element ref="bijlage" maxOccurs="unbounded"/> <xsd:element name="scriptietitel"> <xsd:complexType>
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 47 van 48
Presentaties op maat. Verschillende, consistente en onderhoudbare, presentaties uit één informatiebron met XML en SQL.
<xsd:simpleContent> <xsd:restriction base="xsd:string"> <xsd:attribute name="subtitel" type="xsd:string" use="required"/> <xsd:element name="sectie"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element ref="para" maxOccurs="unbounded"/> <xsd:element name="titel"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cursief"/> <xsd:element name="vet" type="xsd:string"/> <xsd:element name="voetnoot"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cursief"/> <xsd:element name="voorwoord"> <xsd:complexType> <xsd:sequence> <xsd:element ref="alinea" maxOccurs="unbounded"/>
Scriptie Arthur de Groot, Alfa-Informatica, © 2001 J.H.J. de Groot.
blz. 48 van 48