AWS Community Day CPH - Three problems of Terraform
Validating XML - Avoiding the pain
1. Validating XML - Avoiding the pain
Arne Blankerts <arne@thephp.cc>, TobiasSchlitt <toby@php.net>
IPC 2009
2009-11-17
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 1 / 18
2. Outline
1 Welcome
2 Introduction
3 Schema formats
4 The end
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 2 / 18
3. Arne Blankerts
Arne Blankerts <arne@thephp.cc>
PHP since 1999 (10 years of PHP!)
Co-Founder of thePHP.cc
ballyhoo. werbeagentur.
Open source addicted
Inventor and lead developer of fCMS site
system
Contributor and translator for the PHP manual
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 3 / 18
4. Tobias Schlitt
Tobias Schlitt <toby@php.net>
PHP since 2001
Freelancing consultant
Qualified IT Specialist
Studying CS at TU Dortmund
(finishing 2010)
OSS addicted
PHP
eZ Components
PHPUnit
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 4 / 18
5. Outline
1 Welcome
2 Introduction
Why the hell validate?
Validation basics
3 Schema formats
4 The end
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 5 / 18
6. XML is everywhere
On your HD
On the web
In your app
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 6 / 18
7. XML is everywhere
On your HD
On the web
In your app
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 6 / 18
8. XML is everywhere
On your HD
On the web
In your app
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 6 / 18
9. XML comes from everywhere
From the web
From your app
From your users
From 3rd parties
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 7 / 18
10. XML comes from everywhere
From the web
From your app
From your users
From 3rd parties
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 7 / 18
11. XML comes from everywhere
From the web
From your app
From your users
From 3rd parties
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 7 / 18
12. XML comes from everywhere
From the web
From your app
From your users
From 3rd parties
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 7 / 18
13. So why validate?
Broken incoming data breaks your app
Broken outgoing data breaks other apps
You test code, why not test XML?
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 8 / 18
14. So why validate?
Broken incoming data breaks your app
Broken outgoing data breaks other apps
You test code, why not test XML?
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 8 / 18
15. So why validate?
Broken incoming data breaks your app
Broken outgoing data breaks other apps
You test code, why not test XML?
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 8 / 18
16. So why validate?
Broken incoming data breaks your app
Broken outgoing data breaks other apps
You test code, why not test XML?
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 8 / 18
17. What is a XML schema?
Defines the structure of data
Possibly defines data types
Used to validate correctness
Helpful as documentation
Similar to database schemas!
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 9 / 18
18. When to use it?
On XML generation in your app
Before your app consumes XML
In your tests
Give to your XML consumers
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 10 / 18
19. Outline
1 Welcome
2 Introduction
3 Schema formats
Overview
DTD
XML Schema
4 The end
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 11 / 18
20. XML schema formats
DTD
XSD
RELAX NG
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 12 / 18
21. XML schema formats
DTD Document Type Definition
Part of the XML specification
Allows definition of entities
No advanced type support
Does not support different types for same element name
XSD
RELAX NG
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 12 / 18
22. XML schema formats
DTD
XSD XML Schema
W3C recommendation since May 2001
Advanced type support
Support for keys and key references
No support for entities
RELAX NG
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 12 / 18
23. XML schema formats
DTD
XSD
RELAX NG Regular Language for XML Next Generation
Defined by OASIS, ISO/IEC 19757
Generally more powerful than XSD
No support for entities
Not (yet?) as popular as XSD
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 12 / 18
24. DTD
Let’s dig into the code. . .
Schema definitions
Entities
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 13 / 18
25. DTD
Let’s dig into the code. . .
Schema definitions
Advanced types
Key and key-ref
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 14 / 18
26. XSD goodies
Qualified / unqualified
<any> namespace handling
Validation of external elements/attributes
Abstract types and inheritance
Nillable
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 15 / 18
27. XSD goodies
Qualified / unqualified
<any> namespace handling
##any
##other
##local
Validation of external elements/attributes
Abstract types and inheritance
Nillable
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 15 / 18
28. XSD goodies
Qualified / unqualified
<any> namespace handling
Validation of external elements/attributes
strict
skip
lax
Abstract types and inheritance
Nillable
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 15 / 18
29. XSD goodies
Qualified / unqualified
<any> namespace handling
Validation of external elements/attributes
Abstract types and inheritance
Nillable
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 15 / 18
30. XSD goodies
Qualified / unqualified
<any> namespace handling
Validation of external elements/attributes
Abstract types and inheritance
Nillable
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 15 / 18
31. Outline
1 Welcome
2 Introduction
3 Schema formats
4 The end
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 16 / 18
32. Q/A
Are there any questions left?
Please give us some feedback!
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 17 / 18
33. The end
We hope you enjoyed the session!
Slides and material:
Delivered by Software & Support
http://schlitt.info/opensource
On Slideshare (http://slideshare.net)
Contact us:
Arne Blankerts <arne@thephp.cc>
Tobias Schlitt <toby@php.net>
Give us feedback on http://joind.in/1043
Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 18 / 18