Validating XML - Avoiding the pain

        Arne Blankerts <arne@thephp.cc>, TobiasSchlitt <toby@php.net>

               ...
Outline




 1 Welcome


 2 Introduction


 3 Schema formats


 4 The end




Arne Blankerts, Tobias Schlitt (IPC 2009)   ...
Arne Blankerts




         Arne Blankerts <arne@thephp.cc>
         PHP since 1999 (10 years of PHP!)
         Co-Founder...
Tobias Schlitt



         Tobias Schlitt <toby@php.net>
         PHP since 2001
         Freelancing consultant
         ...
Outline




 1 Welcome


 2 Introduction
          Why the hell validate?
          Validation basics

 3 Schema formats

...
XML is everywhere




          On your HD
          On the web
          In your app




Arne Blankerts, Tobias Schlitt (...
XML is everywhere




          On your HD
          On the web
          In your app




Arne Blankerts, Tobias Schlitt (...
XML is everywhere




          On your HD
          On the web
          In your app




Arne Blankerts, Tobias Schlitt (...
XML comes from everywhere




          From the web
          From your app
          From your users
          From 3rd ...
XML comes from everywhere




          From the web
          From your app
          From your users
          From 3rd ...
XML comes from everywhere




          From the web
          From your app
          From your users
          From 3rd ...
XML comes from everywhere




          From the web
          From your app
          From your users
          From 3rd ...
So why validate?



          Broken incoming data breaks your app
          Broken outgoing data breaks other apps
      ...
So why validate?



          Broken incoming data breaks your app
          Broken outgoing data breaks other apps
      ...
So why validate?



          Broken incoming data breaks your app
          Broken outgoing data breaks other apps
      ...
So why validate?



          Broken incoming data breaks your app
          Broken outgoing data breaks other apps
      ...
What is a XML schema?




          Defines the structure of data
          Possibly defines data types
          Used to va...
When to use it?




          On XML generation in your app
          Before your app consumes XML
          In your tests...
Outline



 1 Welcome


 2 Introduction


 3 Schema formats
          Overview
          DTD
          XML Schema

 4 The ...
XML schema formats




              DTD
               XSD
    RELAX NG




Arne Blankerts, Tobias Schlitt (IPC 2009)   V...
XML schema formats




              DTD               Document Type Definition
                                Part of the...
XML schema formats




              DTD
               XSD              XML Schema
                                W3C re...
XML schema formats




              DTD
               XSD
    RELAX NG                    Regular Language for XML Next ...
DTD




 Let’s dig into the code. . .
         Schema definitions
         Entities




Arne Blankerts, Tobias Schlitt (IPC...
DTD




 Let’s dig into the code. . .
         Schema definitions
         Advanced types
         Key and key-ref




Arne...
XSD goodies




          Qualified / unqualified
          <any> namespace handling
          Validation of external elemen...
XSD goodies




          Qualified / unqualified
          <any> namespace handling
                  ##any
               ...
XSD goodies




          Qualified / unqualified
          <any> namespace handling
          Validation of external elemen...
XSD goodies




          Qualified / unqualified
          <any> namespace handling
          Validation of external elemen...
XSD goodies




          Qualified / unqualified
          <any> namespace handling
          Validation of external elemen...
Outline




 1 Welcome


 2 Introduction


 3 Schema formats


 4 The end




Arne Blankerts, Tobias Schlitt (IPC 2009)   ...
Q/A




          Are there any questions left?
          Please give us some feedback!




Arne Blankerts, Tobias Schlitt...
The end




          We hope you enjoyed the session!
          Slides and material:
                  Delivered by Softw...
Upcoming SlideShare
Loading in …5
×

Validating XML - Avoiding the pain

2,018 views

Published on

Slides from the DTD / XSD tutorial by Arne Blankerts and me. We did a lot of live hacking in this session, so the slides are quite thin.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Validating XML - Avoiding the pain

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

×