XML – Tekortkomingen en pluspunten

advertisement
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
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
•
•
•
•
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
code
page
473
ASCII
code
page
850
Engels,
meeste Frans, Duits
IBM PC
DEC Multinational
West
Character
Europees
Set
+Áß
WestISOEuropees
8859-1
(ISO-Latin)
Windows
1252
ShiftJIS
Japans
EBCDIC
IBM
mainframe
Marc de Graauw
http://www.marcdegraauw.com/
ISO8859-15
ISO-Latin
+ ‘IJ’sland
+ ‘œ’uf
ISO-Latin
+ œ, €
etc. etc. etc....
Vóór Unicode
CP
437
CP
850
Windows
1252
ISOLatin-1
ISOLatin-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 Graauw
http://www.marcdegraauw.com/
Unicode
code
point
karakter
glyph
m
m
U+006D
LATIN SMALL LETTER M
(de letter ‘m’)
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
teken
code
point
UTF-8
UTF-16
ISOLatin-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 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/
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 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
/
document root
/book
alle <book> elementen onder root
/book[@id]
alle <book> elementen onder root
met een ‘id’ attribuut
Marc de Graauw
http://www.marcdegraauw.com/
XSLT stylesheet
XML bronbestand
Marc de Graauw
http://www.marcdegraauw.com/
XML resultaat
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)
Schematron
regels voor
project X
Stylesheet
voor project X
XML
bestand
project X
Marc de Graauw
http://www.marcdegraauw.com/
Rapport XML
bestand
project X
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
HTTP 200 OK + pagina
Marc de Graauw
http://www.marcdegraauw.com/
XML
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/
Download