XML Introductie
[email protected]
http://www.cs.kuleuven.be/~joost
eXtensible Markup Language • Aanbrengen van extra informatie in tekst
• Betekenis van de tekst beschrijven
• Uitbreidbaar: afhankelijk van probleemdomein
Bijvoorbeeld Laura Lynn, pseudoniem van Sabrina Tack (Ardooie, 18 juni 1976) is een Vlaamse zangeres uit West-Vlaanderen. In België staat ze ook wel bekend als de Schlagerkoningin.
Bijvoorbeeld • Dit stukje tekst beschrijft een artiest
• Met een geboortedatum en -plaats
• Met een artiestennaam
• Met een echte naam
• Met een bijnaam
Deze informatie • De schrijver weet dit
• De lezer kan dit begrijpen
• Een computer heeft geen idee Artiesten in Belgie geboren na 1965 in West-Vlaanderen?
Bijvoorbeeld Laura Lynn, pseudoniem van Sabrina Tack (Ardooie, 18 juni 1976) is een Vlaamse zangeres uit West-Vlaanderen. In België staat ze ook wel bekend als de Schlagerkoningin. Markup Betekenisinformatie toevoegen
Dus XML <artiest nationaliteit= “BE”>
<artiestenNaam> Laura Lynn
pseudoniem van
<echteNaam>
Sabrina
Tack
werd geboren op
... ...
Welgevormde XML • Een tag:
• Mogelijk ook met attributen:
• •
Elk tag wordt gesloten met
Tags worden netjes genest:
•
Tag zonder inhoud mag ook zo:
Volledig bestand één XML wortel tag
<artiest nationaliteit= “BE”>
<artiestenNaam>Laura Lynn
...
Boomstructuur Nationaliteit
artiest
artiestenNaam “Pseu...” echteNaam “Laura Lynn”
voornaam “Sabrina”
achternaam “Tack”
eXtensible • Tags hangen af van de toepassing
• Bv. <artiest> <artiestenNaam> ...
• Bv. ...
• Bv. <motor> ...
• Met XML kan data worden opgeslagen
• Als “gewone’’ tekst
• Mens-leesbaar
• Computer-leesbaar
• Applicatie onafhankelijk
weet dat je in XML je eigen tags kan defini¨eren, maar als iedereen zijn eigen tags gaat aanmaken, begrijpt niemand elkaar nog. Enkel als men afspraken maakt over de gebruikte tags, worden XML-gegevens uitwisselbaar. Daarom wordt er gestreefd naar standaarden. Voorbeelden van XML-standaarden zijn XHTML (HTML volgens de XML syntax), MathML (weergeven van wiskundige formules), SMIL (Synchroniseren van Multimedia-informatie), SVG (Weergeven van grafische informatie) en XSLT (zie verder).
Vergelijking
• XML-teksten zijn leesbaar voor mensen en toch handelbaar voor computers. XML is een compromis tussen twee uitersten: voor de machine supersnel toegankelijke maar voor de mens bijna onleesbare codes versus pure tekstgegevens die voor de mens vlot leesbaar zijn maar heel moeilijk te verwerken door computers. Persoonsgegevens weergegeven numeriek (interne computervoorstelling), XML en vlakke tekst:
12345 83019475692745839
Willy Asselman 29 <maand>2 <jaar>1948
Willy Asselman werd geboren op 29 februari 1948. Zijn SIS nummer is 12345.
• Bij XML is inhoud gescheiden van opmaak. Dit maakt het heel flexibel: dezelfde inhoud kan makkelijk op verschillende manieren worden getoond. Een ander voordeel is het singlesource principe: ´e´en bronbestand van waaruit verschillende presentaties kunnen worden afgeleid. Bij wijzigingen moet enkel de bron worden aangepast en de verschillende presentatievormen veranderen automatisch mee. Zo kan je bijvoorbeeld een andere vorm kiezen voor verschillende soorten gebruikers of toepassingsgebieden (bijvoorbeeld PDA of WAP). • Met behulp van XML kan je: ∗ gegevens uitwisselen; ∗ data stockeren (volgens het single-source principe);
XML is niet... • een programmeertaal (zoals C)
• (altijd) een opmaaktaal (zoals HTML)
• een stuk software
Met XML kan je... • gegevens uitwisselen
• gegevens opslaan (“voor eeuwig”)
• verschillende functionaliteiten gebruiken
• navigeren door gegevens
• omzetten van gegevens
• ...
XML vs. HTML • Inhoud
• Uitbreidbaar
• Opmaak
• Vast
Zijn complementair
XHTML • GeXMLiseerde versie van HTML
• Correcte XML
• Alles in kleine letters
• Netter en duidelijker
• Gemakkelijker voor parsers
• Beter gestandardiseerd Toekomst (?)
Naamruimtes • Vermijden dat dezelfde naam in
verschillende contexten gebruikt wordt
• Naamruimte wordt geïdentificeerd door URI en krijgt prefix
xmlns:schl= “http://denayer.be/schlagers”>
Paola
<schl:koningin> Laura Lynn
Default naamruimte
xmlns:schl= “http://denayer.be/schlagers”>
Paola
<schl:koningin> Laura Lynn
Beschrijven van XML eXtensible: je kan je eigen taal definiëren
Je hebt me 1000 maal bedrogen
<artiest>
Laura Lynn
<echteNaam> Sabrina Tack
Welke tags en hoe passen ze samen?
Validatie • Welgevormd document: geldige XML
• Wordt gecontroleerd door bv. firefox
• Voldoet aan specifieke regels
• Validator
Document Type Definition Beschrijft toegelaten structuur van XML
empty
(inhoud) e , f
e | f
e*
e+
e?
#PCDATA
!
CDATA
(a|b|...)
ID
IDREF
...
#REQUIRED
#IMPLIED
#FIXED waarde
default-waarde
...
•Parameter entiteiten: “waarde”
>
In DTD: %naam; wordt vervangen
•Algemene entiteiten: “waarde”
>
In XML document: &naam; wordt vervangen
Koppeling XML & DTD [ DTD ]
SYSTEM “bestandsnaam” (zie demo: http://validator.w3.org/)
XSD • Informatie over XML structuur is ook informatie
• Je kan een XML formaat ontwerpen om XML formaten in te beschrijven
XML Schema Definition
Wat doen met XML? • Verwerking met programma
• Inlezen
• Valideren
• Welgevormd en/of “valid”
• Omzetten
• Eerste stap: parsen
1.4
Verwerking
Een XML-bestand moet je bekijken als een bronbestand waarmee je dingen kan doen, bijvoorbeeld gegevens bij elkaar voegen, sorteren en op een bepaalde manier presenteren. Vooraleer je iets kan doen met XML, moet je het uiteraard eerst parsen (zie vorige sectie). Parsen is nochtans maar de eerste stap. Daarna moet je je XML-gegevens op ´e´en of andere manier verwerken (of processen). Je kan ze bijvoorbeeld omzetten naar een ander formaat (zoals RTF of PDF), of ze presenteren op ´e´en of andere manier. Willy Asselman V 29 e P <maand>2 r a <jaar>1948 w r B
o
e s o
m r i n k Guido Folens g i n g 9 <maand>5 <jaar>1968 Verwerking van een XML-document kan op twee manieren:
Verjaardagen: Willy Asselman: 29.02 Guido Folens : 9.05
• Boom-gebaseerd: het gehele document wordt als een boomstructuur in het geheugen geladen. Alle informatie in het document is dan toegankelijk via de knopen van de boom. Je kan bijvoorbeeld alle nodes (knopen) van de boom doorlopen en afdrukken in een tabel. Voorbeeld: DOM.
Twee soorten “parsers” • Boom-gebaseerd: DOM
• Eerst helemaal inlezen, dan verwerken
• Gebeurtenis-gebaseerd: SAX
• Verwerken tijdens het inlezen
functionaliteiten voor het navigeren door en manipuleren van XML-documenten op een boomgebaseerde manier. Een DOM parser leest het volledige XML-document in en bouwt er een boomstructuur van in het geheugen. Alle items van het document (elementen, inhoud van elementen, attributen, process instructies, ...) worden omgezet naar een node van de boom. Daarna kan je elke node apart gaan bewerken, navigeren door de boom, enz. Voordelen:
DOM
Document Object Model
• Recht-voor-de-raap: DOM geeft mooi het systeem van parsen aan: eerst checken op welgevormdheid (en eventueel validiteit) bij het inlezen van het document en opbouwen van de boom, dan verwerking via de afzonderlijke nodes. • Random access tot alle elementen, attributen, enz.
• Plaats eerst hele XML bestand in boom
• Dan verwerking door opvragen van boom Nadelen:
• Moeilijk voor zeer grote documenten.
• Kan traag zijn. • E´en fout tegen welgevormdheid of validiteit zorgt ervoor dat je niets kan doen met je document, ook niet als de informatie die je nodig hebt in het begin staat en de fout helemaal op het einde. Willy Asselman 29 <maand>2 <jaar>1948 ...
1.4.2
SAX
P a r s i n g
verjaren persoon naam
sis
gebdat
dag
maand
jaar
Verwerking Verjaardagen: Willy Asselman: 29.02 Guido Folens : 9.05
functionaliteiten voor het navigeren door en manipuleren van XML-documenten op een boomgebaseerde manier. Een DOM parser leest het volledige XML-document in en bouwt er een boomstructuur van in het geheugen. Alle items van het document (elementen, inhoud van elementen, attributen, process instructies, ...) worden omgezet naar een node van de boom. Daarna kan je elke node apart gaan bewerken, navigeren door de boom, enz. Voordelen:
DOM
Document Object Model
• Recht-voor-de-raap: DOM geeft mooi het systeem van parsen aan: eerst checken op welgevormdheid (en eventueel validiteit) bij het inlezen van het document en opbouwen van de boom, dan verwerking via de afzonderlijke nodes. • Random access tot alle elementen, attributen, enz.
• Taalonafhankelijke standaard datastructuur
• Implementaties beschikbaar voor ... Nadelen:
• Moeilijk voor zeer grote documenten.
• Kan traag zijn. • E´en fout tegen welgevormdheid of validiteit zorgt ervoor dat je niets kan doen met je document, ook niet als de informatie die je nodig hebt in het begin staat en de fout helemaal op het einde. Willy Asselman 29 <maand>2 <jaar>1948 ...
1.4.2
SAX
P a r s i n g
verjaren persoon naam
sis
gebdat
dag
maand
jaar
Verwerking Verjaardagen: Willy Asselman: 29.02 Guido Folens : 9.05
DOM
Domain Object Model
+ Gemakkelijk
+ Willekeurige toegang
- Geheugen
- Traag
- Foutief document is helemaal nutteloos
SAX
Simple API for XML
• Elke tag is een “gebeurtenis”
• Programmeur kan code schrijven om gebeurtenis af te handelen
Willy Willy Asselman 29 <maand>2 <jaar>1948 Verjaardagen: 1. Willy Asselman: 29.02 2. Guido Folens : 9.05 ...
SAX
Simple API for XML
+ Kan immens grote document aan
+ Doet geen overbodig inlees-werk
+ Werkt ook bij fouten
- Geen willekeurige toegang
- Geen informatie over toekomst
Tonen van XML • Rechtstreeks: stylesheet CSS (=> demo)
• Een beetje beperkt
• Via transformatie naar HTML of XSL:FO
• Eigen programma
• XSLT
Client-server SERVER SERVER
CLIENT CLIENT
XML XML HTML HTML
XSL XSL
• Server kant: een script op de server verwerkt een XML-en een XSL-bestand tot ´e´en HTML• Server kant: een script de naar server bestand en stuurt dit op door deverwerkt client. een XML-en een XSL-bestand tot ´e´en HTMLbestand en stuurt dit door naar de client.
SERVER SERVER
CLIENT CLIENT
XML XML XSL XSL
1.6 Toepassingen van XML 1.6 Toepassingen van XML
HTML HTML
HTML HTML
XML kent vele toepassingsgebieden, aangezien het een zeer breed inzetbare technologie is. BinXML kent vele toepassingsgebieden, aangezien het een zeer breeddeinzetbare technologie is. Binnen de XML-wereld zijn er traditioneel twee onderverdelingen: data-wereld en de document-
1.6
Toepassingen van XML
XML kent vele toepassingsgebieden, aangezien het een zeer breed inzetbare technologie is. Binnen de XML-wereld zijn er traditioneel twee onderverdelingen: de data-wereld en de documentwereld.
Toepassingen
• Bij de eerste invalshoek wordt XML gebruikt om gegevens op te slaan of uit te wisselen die vroeger uitsluitend in databanken terug te vinden waren, zoals financi¨ele gegevens, klantenrecords en stockinformatie. Dit zijn typisch gegevens die zeer sterk kunnen gestructureerd worden en die in kleine stukjes kunnen worden opgekapt. • De document-wereld gebruikt XML om tekst-geori¨enteerde informatie op te slaan of uit te wisselen, zoals boeken of krantenartikels. Deze informatie is ook goed te structureren, maar zal doorgaans in veel grotere stukken verdeeld worden (hoofdstukken, paragrafen, alinea’s, ...). Het volgende schema geeft een aantal belangrijke toepassingsgebieden van XML aan:
XML maken XML modellering DTD - Schema parsing XML editors transformatie
Content management Versiebeheer Knowledge management
Navigeren Filteren
Data stockeren
Adressering: XPATH Linking: XLINK Meta-data / Ontologi¨en: RDF Topix Maps: XTM Semantic Web
Publiceren
Uitwisselen e-commerce web-services security applicatie-integratie SOAP
Zoeken
Data stockeren XML en databanken XML Query
transformatie: XSLT Web: XHTML, XFORMS WAP: WML Print: XSL:FO Multimedia: SMIL, SVG, MathML
12
Data
Document
Inhoud cursus • XSD
• XPath en XQuery
• XSLT en XSL-FO
• Toepassingen