500 likes | 673 Views
XML. Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009. Marc de Graauw. studeerde biologie & filosofie sinds 1989 in de ICT sinds 1996 zelfstandig consultant semantiek interoperabiliteit XML & Web Services
E N D
XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009 Marc de Graauw http://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 Graauw http://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 Graauw http://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 Graauw http://www.marcdegraauw.com/
XML en Unicode Marc de Graauw http://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 Graauw http://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 Graauw http://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. Marc de Graauw http://www.marcdegraauw.com/
Vóór Unicode bytes 128 - 255 bytes 0 - 127 ISO- 8859-1 (ISO-Latin) code page 473 West- Europees Engels, meeste Frans, Duits IBM PC ASCII DEC Multi- national Character Set code page 850 West Europees + Á ß ISO- 8859-15 ISO-Latin + ‘IJ’sland + ‘œ’uf Windows 1252 ISO-Latin + œ, € Shift- JIS EBCDIC IBM mainframe Japans etc. etc. etc.... Marc de Graauw http://www.marcdegraauw.com/
Vóór Unicode Marc de Graauw http://www.marcdegraauw.com/
Unicode code point glyph karakter m m LATIN SMALL LETTER M (de letter ‘m’) U+006D m m m Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Tengwar – Tolkien - niet officieel (private use range) Marc de Graauw http://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 Graauw http://www.marcdegraauw.com/
Unicode encodings Marc de Graauw http://www.marcdegraauw.com/
XML • Java • .NET Marc de Graauw http://www.marcdegraauw.com/
XML • XML = SGML – ballast + Unicode • Een XML document is een boom • Een root node • Attributen, elementen, tekst Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Documenten • opmaak • kleur • plaatjes in de tekst • vetgedrukte en schuingedrukte tekst • titel / paragraaf / lijst Marc de Graauw http://www.marcdegraauw.com/
Marc de Graauw http://www.marcdegraauw.com/
Data • tabellen, rijen, kolommen • cijfers • korte teksten • datatypes: %, mm, °C, bft • datatypes en structuur van een XML document vastleggen in een schema Marc de Graauw http://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 Graauw http://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 Graauw http://www.marcdegraauw.com/
Pro XML • combineert documenten met data • software breed beschikbaar • geen problemen met • encoding • regeleinden • afspraken Marc de Graauw http://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 Graauw http://www.marcdegraauw.com/
XPath en XSLT Marc de Graauw http://www.marcdegraauw.com/
XPath • XPath: taal om nodes uit de boom te trekken Marc de Graauw http://www.marcdegraauw.com/
XSLT stylesheet XML bronbestand XML resultaat Marc de Graauw http://www.marcdegraauw.com/
XSLT • demo (stylesheet – bron – resultaat) • voordelen • snel • veel implementaties op veel platforms • nadelen • verbose • namespaces zijn foutgevoelig Marc de Graauw http://www.marcdegraauw.com/
Schematalen Marc de Graauw http://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 Graauw http://www.marcdegraauw.com/
RelaxNG Marc de Graauw http://www.marcdegraauw.com/
XML Schema ongeldige constructie! ongeldige constructie! Marc de Graauw http://www.marcdegraauw.com/
Schematron • rules • in XML • alleen een XSLT processor nodig Schematron stylesheet(s) Stylesheet voor project X Schematron regels voor project X XML bestand project X Rapport XML bestand project X Marc de Graauw http://www.marcdegraauw.com/
Schematron Marc de Graauw http://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 Graauw http://www.marcdegraauw.com/
JSON en Ajax Marc de Graauw http://www.marcdegraauw.com/
JSON • JavaScript Object Notation • compact • sluit goed aan op programmeertalen • geen schemataal • altijd Unicode; voorkeur UTF-8 Marc de Graauw http://www.marcdegraauw.com/
HTML Server Browser HTTP GET HTTP 200 OK + pagina HTTP GET HTTP 200 OK + pagina Marc de Graauw http://www.marcdegraauw.com/
XMLHttpRequest Server Browser HTTP GET HTTP 200 OK + pagina XMLHttpRequest HTTP GET XML HTTP 200 OK + pagina Marc de Graauw http://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 Graauw http://www.marcdegraauw.com/
Web Services Marc de Graauw http://www.marcdegraauw.com/
Web Services basis • XML voor de gegevens • Schema voor • contract • design • codegeneratie • validatie • Transport: SOAP en HTTP • Servicebeschrijving: WSDL Marc de Graauw http://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 Graauw http://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 Graauw http://www.marcdegraauw.com/
Vragen? Marc de Graauw http://www.marcdegraauw.com/