Marc de Graauw XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay...

50
Marc de Graauw http:// www.marcdegraauw.com/ XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009

Transcript of Marc de Graauw XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay...

Page 1: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XMLAlle tekortkomingen op een rijtje! (en

een paar pluspunten...)

Innovation DevDay 2009

Page 2: Marc de Graauw  XML Alle 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/

Page 3: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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?

Page 4: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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’)

Page 5: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XML en Unicode

Page 6: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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>

Page 7: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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>

Page 8: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 9: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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....

Page 10: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 11: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 12: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Page 13: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Page 14: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Page 15: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Page 16: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Page 17: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Tengwar – Tolkien - niet officieel (private use range)

Page 18: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 19: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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 -

Page 20: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

• XML

• Java

• .NET

Page 21: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XML

• XML = SGML – ballast + Unicode– Een XML document is een boom– Een root node– Attributen, elementen, tekst

Page 22: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Page 23: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Documenten

• opmaak

• kleur

• plaatjes in de tekst

• vetgedrukte en schuingedrukte tekst

• titel / paragraaf / lijst

Page 24: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 25: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 26: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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...

Page 27: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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>

Page 28: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Pro XML

• combineert documenten met data

• software breed beschikbaar

• geen problemen met– encoding– regeleinden– afspraken

Page 29: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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>

Page 30: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XPath en XSLT

Page 31: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 32: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XSLT stylesheet

XML bronbestand XML resultaat

Page 33: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XSLT

• demo (stylesheet – bron – resultaat)

• voordelen– snel– veel implementaties op veel platforms

• nadelen– verbose– namespaces zijn foutgevoelig

Page 34: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Schematalen

Page 35: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 36: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

RelaxNG

Page 37: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XML Schema

ongeldige constructie!

ongeldige constructie!

Page 38: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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)

Page 39: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Schematron

Page 40: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 41: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

JSON en Ajax

Page 42: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

JSON

• JavaScript Object Notation• compact• sluit goed aan op programmeertalen• geen schemataal• altijd Unicode; voorkeur UTF-8

Page 43: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

ServerBrowser

HTTP 200 OK + pagina

HTTP GET

HTML

HTTP 200 OK + pagina

HTTP GET

Page 44: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

XML

ServerBrowser

HTTP 200 OK + pagina

HTTP GET

XMLHttpRequest

HTTP 200 OK + pagina

HTTP GET

XMLHttpRequest

Page 45: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 46: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Web Services

Page 47: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 48: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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!

Page 49: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

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

Page 50: Marc de Graauw  XML Alle tekortkomingen op een rijtje! (en een paar pluspunten...) Innovation DevDay 2009.

Marc de Graauwhttp://www.marcdegraauw.com/

Vragen?