Marc de Graauw XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay...
-
Upload
siebe-goossens -
Category
Documents
-
view
213 -
download
0
Transcript of Marc de Graauw XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay...
Marc de Graauwhttp://www.marcdegraauw.com/
XMLAlle tekortkomingen op een rijtje! (en
een paar pluspunten...)
Innovation DevDay 2009
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauw
• studeerde biologie & filosofie• sinds 1989 in de ICT• sinds 1996 zelfstandig consultant
– semantiek– interoperabiliteit– XML & Web Services
• Landelijk Elektronisch Patiëntendossier, Strafrechtketen, verzekeraars, arbodiensten, UWV
• artikelen en presentaties: zie http://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
De geschiedenis van XML
• SGML– Standard Generalized Markup Language– IBM: back to the sixties...– Markup: structuur, niet processing
• HTML: SGML spinoff• 1998: XML
– SGML voor het Web, zonder ballast
• 2002: Hype• 2009: Waar staan we?
Marc de Graauwhttp://www.marcdegraauw.com/
Waarom XML?
• XML als documentformaat– uitgevers: een bron, veel weergaven– SGML is te complex
• XML voor gegevensuitwisseling– ASCII, CSV is te simpel en foutgevoelig– EDI is te duur
• XML voor het Web– HTML kan geen semantiek uitdrukken– XML volgende generatie (‘Semantic Web’)
Marc de Graauwhttp://www.marcdegraauw.com/
XML en Unicode
Marc de Graauwhttp://www.marcdegraauw.com/
HTML - een voorbeeld
<HTML><HEAD><TITLE>Marc de Graauw</TITLE></HEAD><BODY><H1>Marc de Graauw</H1><P>Geslacht: Man</P><H2>Opleidingen</H2><OL><LI>VWO</LI><LI>kandidaats Biologie</LI><LI>doctoraal filosofie</LI></OL></BODY></HTML>
Marc de Graauwhttp://www.marcdegraauw.com/
XML - een voorbeeld
<?xml version="1.0" encoding="UTF-8"?>
<persoon> <persoonsgegevens geslacht="Man"> <achternaam>Graauw</achternaam> <voorvoegsel>de</voorvoegsel> <voornaam>Marc</voornaam> </persoonsgegevens> <opleiding>VWO</opleiding> <opleiding>kandidaats Biologie</opleiding> <opleiding>doctoraal filosofie</opleiding></persoon>
Marc de Graauwhttp://www.marcdegraauw.com/
Vóór Unicode
• 7 bits, 128 tekens, 95 afdrukbaar• Engels: cijfers, letters, leestekens• niet: Frans: ê ç Duits: ß ä Grieks: ε Ω Nederlands: ë ï• Spaans, Arabisch, Fins, Russisch, Chinees, Thais, etc. etc.
bits 0110 1101 0110 0001 0111 0010 0110 0011
bytes dec 109 97 114 99
bytes hex 6d 61 72 63
ascii m a r c
Marc de Graauwhttp://www.marcdegraauw.com/
Vóór Unicode
ASCII DEC Multi-national
Character Set
codepage850
code page473
bytes 0 - 127 bytes 128 - 255
Engels, meeste Frans, DuitsIBM PC
ISO-Latin + œ, €
ISO-Latin+ ‘IJ’sland+ ‘œ’uf
ISO-8859-1
(ISO-Latin)
West-Europees
ISO-8859-15
Windows1252
WestEuropees+ Á ß
Shift-JIS
Japans EBCDICIBMmainframe
etc. etc. etc....
Marc de Graauwhttp://www.marcdegraauw.com/
Vóór Unicode
CP
437
CP
850
Windows 1252
ISO-Latin-1
ISO-Latin-15
Unicode
a 61 61 61 61 61 0061
á a0 a0 e1 e1 e1 00e1
ä 84 84 e4 e4 e4 00e4
€ - - 80 - a4 20ac
õ - e4 f5 f5 f5 00f5
Ç 80 80 c7 c7 c7 00c7
œ - - 9c - bd 0153
Marc de Graauwhttp://www.marcdegraauw.com/
Unicode
code point
U+006D
karakter
LATIN SMALL LETTER M(de letter ‘m’)
glyph
m
m
m
m
m
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
Tengwar – Tolkien - niet officieel (private use range)
Marc de Graauwhttp://www.marcdegraauw.com/
Unicode encodings• Unicode
– U+006D = ‘m’– karakter 0 – 255: gelijk aan ISO-Latin-1– 1.114.112 code points (0 – 10FFFF)
• UTF-16 encoding– 4 bytes– 0000 – FFFF: gelijk aan Unicode nummer– Byte Order Mark
• U+FEFF (ZERO-WIDTH NO-BREAK SPACE)• byte-swapped = U+FFFE = geen legaal karakter
– efficiënt voor Chinees en Japans• UTF-8
– 1 tot 4 bytes– 0 – 127: gelijk aan ASCII– ergo: ASCII tekst is altijd ook UTF-8 tekst– efficiënt voor Westerse talen
Marc de Graauwhttp://www.marcdegraauw.com/
Unicode encodings
teken code point
UTF-8 UTF-16 ISO-Latin-1
ASCII
spatie U+0020 20 00 20 20 20
a U+0061 61 00 61 61 61
ä U+00E4 C3 A4 00 E4 E4 -
Marc de Graauwhttp://www.marcdegraauw.com/
• XML
• Java
• .NET
Marc de Graauwhttp://www.marcdegraauw.com/
XML
• XML = SGML – ballast + Unicode– Een XML document is een boom– Een root node– Attributen, elementen, tekst
Marc de Graauwhttp://www.marcdegraauw.com/
Marc de Graauwhttp://www.marcdegraauw.com/
Documenten
• opmaak
• kleur
• plaatjes in de tekst
• vetgedrukte en schuingedrukte tekst
• titel / paragraaf / lijst
Marc de Graauwhttp://www.marcdegraauw.com/
wo do vr za zo
Zonneschijn (%) 20 40 50 40 40
Neerslagkans (%) 20 10 10 10 20
Neerslaghoeveelheid (mm) 2 0 0 0 0-1
Minimumtemperatuur (°C) 15 9/11 8/11 9/11 9/11
Middagtemperatuur (°C) 18 16/19 17/20 17/20 16/19
Windrichting W NW W W W
Windkracht (bft) 4 3 3 2 3
Marc de Graauwhttp://www.marcdegraauw.com/
• tabellen, rijen, kolommen
• cijfers
• korte teksten
• datatypes: %, mm, °C, bft
• datatypes en structuur van een XML document vastleggen in een schema
Data
Marc de Graauwhttp://www.marcdegraauw.com/
Document Object Model (DOM)
• XML document wordt ingeladen in een object– de ‘DOM tree’
• methoden– getElementsByTagName(...)– getAttribute(...)– createElement(...)
• dezelfde methoden in iedere taal: Java, C, .NET...
Marc de Graauwhttp://www.marcdegraauw.com/
Namespaces
• een document kan meerdere vocabulaires herbergen
• wat is dan de betekenis van <name>, <id>...
• namespace voorbeelden: • <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">• <schema xmlns="http://www.w3.org/2001/XMLSchema">• <element name="purchaseOrder" type="po:PurchaseOrderType"/>• <faultcode>SOAP-ENV:MustUnderstand</faultcode>
Marc de Graauwhttp://www.marcdegraauw.com/
Pro XML
• combineert documenten met data
• software breed beschikbaar
• geen problemen met– encoding– regeleinden– afspraken
Marc de Graauwhttp://www.marcdegraauw.com/
Contra XML
• overhead door start- en eindtags• DOM is complex• DOM sluit niet goed aan op programmeertalen• Namespaces zijn complex• Redundantie• <mdg:auteur naam="Marc"
xmlns:mdg="http://www.marcdegraauw.com/voorbeeld/"/>• <auteur xmlns="http://www.marcdegraauw.com/voorbeeld/"
naam="Marc"></auteur>
Marc de Graauwhttp://www.marcdegraauw.com/
XPath en XSLT
Marc de Graauwhttp://www.marcdegraauw.com/
XPath
• XPath: taal om nodes uit de boom te trekken
/ document root
/book alle <book> elementen onder root
/book[@id] alle <book> elementen onder root
met een ‘id’ attribuut
Marc de Graauwhttp://www.marcdegraauw.com/
XSLT stylesheet
XML bronbestand XML resultaat
Marc de Graauwhttp://www.marcdegraauw.com/
XSLT
• demo (stylesheet – bron – resultaat)
• voordelen– snel– veel implementaties op veel platforms
• nadelen– verbose– namespaces zijn foutgevoelig
Marc de Graauwhttp://www.marcdegraauw.com/
Schematalen
Marc de Graauwhttp://www.marcdegraauw.com/
Schematalen
• 1998: XML, DOM, XPath• 1999: Namespaces, XSLT• 2001: XML Schema• W3C versus ISO• 1999: Schematron• 2001: RelaxNG• 2003: ISO RelaxNG• 2006: ISO Schematron• demo L1, L2
Marc de Graauwhttp://www.marcdegraauw.com/
RelaxNG
Marc de Graauwhttp://www.marcdegraauw.com/
XML Schema
ongeldige constructie!
ongeldige constructie!
Marc de Graauwhttp://www.marcdegraauw.com/
Schematron
• rules
• in XML
• alleen een XSLT processor nodig
Schematronregels voorproject X
Stylesheetvoor project X
Rapport XMLbestandproject X
XMLbestandproject X
Schematronstylesheet(s)
Marc de Graauwhttp://www.marcdegraauw.com/
Schematron
Marc de Graauwhttp://www.marcdegraauw.com/
Schema pro en con
• Schema’s– zonder schema: eindeloze discussies
• XML Schema– is complex– kan veel simpele constraints niet uitdrukken– is overal aanwezig, m.n. in Microsoft en Web Services
• RelaxNG– simpeler– minder software
• Schematron– regelgebaseerd– XSLT processor is de hele toolkit
Marc de Graauwhttp://www.marcdegraauw.com/
JSON en Ajax
Marc de Graauwhttp://www.marcdegraauw.com/
JSON
• JavaScript Object Notation• compact• sluit goed aan op programmeertalen• geen schemataal• altijd Unicode; voorkeur UTF-8
Marc de Graauwhttp://www.marcdegraauw.com/
ServerBrowser
HTTP 200 OK + pagina
HTTP GET
HTML
HTTP 200 OK + pagina
HTTP GET
Marc de Graauwhttp://www.marcdegraauw.com/
XML
ServerBrowser
HTTP 200 OK + pagina
HTTP GET
XMLHttpRequest
HTTP 200 OK + pagina
HTTP GET
XMLHttpRequest
Marc de Graauwhttp://www.marcdegraauw.com/
AJAX
• Asynchronous JavaScript and XML– XMLHttpRequest– ‘XML’ is hier vaak JSON!– pulldowns, refresh, drag & drop– Javascript libraries– Prototype, jQuery e.v.a.
• AJAX– volledige applicatie in de browser– ASP
Marc de Graauwhttp://www.marcdegraauw.com/
Web Services
Marc de Graauwhttp://www.marcdegraauw.com/
Web Services basis
• XML voor de gegevens
• Schema voor– contract– design– codegeneratie– validatie
• Transport: SOAP en HTTP
• Servicebeschrijving: WSDL
Marc de Graauwhttp://www.marcdegraauw.com/
Web Services stack (WS-*)
• Security– XML Signature, XML Encryption– XML Canonicalization (2x)– WS-Security, WS-SecureConversation, WS-Trust
• Transport– WS-Addressing– WS-ReliableMessaging– MTOM
• Metadata– WS-Policy
• Totaal: complex!
Marc de Graauwhttp://www.marcdegraauw.com/
Waarom XML?
• XML als documentformaat– uitgevers: het werkt– SGML is grotendeels vervangen
• XML voor gegevensuitwisseling– veelgebruikt: EDI en CSV zijn geen alternatief– Web Services: complex...
• XML voor het Web– grotendeels mislukt– JSON vult een deel van deze niche
Marc de Graauwhttp://www.marcdegraauw.com/
Vragen?