SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
XML schema formats




              DTD
               XSD
    RELAX NG




Arne Blankerts, Tobias Schlitt (IPC 2009)   Validating XML - Avoiding the pain   2009-11-17   12 / 18
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Semelhante a Validating XML - Avoiding the pain

A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML
A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML
A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML Alexandro Colorado
 
SplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense Center
SplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense CenterSplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense Center
SplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense CenterSplunk
 
XML and Related Technologies - Web Technologies (1019888BNR)
XML and Related Technologies - Web Technologies (1019888BNR)XML and Related Technologies - Web Technologies (1019888BNR)
XML and Related Technologies - Web Technologies (1019888BNR)Beat Signer
 
You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...
You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...
You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...BookNet Canada
 
XML, XML Databases and MPEG-7
XML, XML Databases and MPEG-7XML, XML Databases and MPEG-7
XML, XML Databases and MPEG-7Deniz Kılınç
 
Fatah Uddin (072831056)
Fatah Uddin (072831056)Fatah Uddin (072831056)
Fatah Uddin (072831056)mashiur
 
introduction and basic of web development
introduction and basic of web developmentintroduction and basic of web development
introduction and basic of web developmentamithvp002
 
Introduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTIntroduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTCanonical
 
Introduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTIntroduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTAmrisha Prashar
 
Introduction to xml
Introduction to xmlIntroduction to xml
Introduction to xmlsoumya
 
EXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALA
EXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALAEXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALA
EXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALASaikiran Panjala
 
Ample SDK - Open Source GUI Framework
Ample SDK - Open Source GUI FrameworkAmple SDK - Open Source GUI Framework
Ample SDK - Open Source GUI FrameworkBéla Varga
 
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xml
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xmlXml theory 2005_[ngohaianh.info]_1_introduction-to-xml
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xmlÔng Thông
 
Verification Automation Using IPXACT
Verification Automation Using IPXACTVerification Automation Using IPXACT
Verification Automation Using IPXACTDVClub
 

Semelhante a Validating XML - Avoiding the pain (20)

A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML
A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML
A Technical Comparison: ISO/IEC 26300 vs Microsoft Office Open XML
 
CV_RuudOverman
CV_RuudOvermanCV_RuudOverman
CV_RuudOverman
 
SplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense Center
SplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense CenterSplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense Center
SplunkLive! Frankfurt 2018 - Customer Presentation: Bosch Cyber Defense Center
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 
XML and Related Technologies - Web Technologies (1019888BNR)
XML and Related Technologies - Web Technologies (1019888BNR)XML and Related Technologies - Web Technologies (1019888BNR)
XML and Related Technologies - Web Technologies (1019888BNR)
 
Bp124
Bp124Bp124
Bp124
 
You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...
You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...
You Want to Go XML-First: Now What? Building an In-House XML-First Workflow -...
 
paper about xml
paper about xmlpaper about xml
paper about xml
 
XML, XML Databases and MPEG-7
XML, XML Databases and MPEG-7XML, XML Databases and MPEG-7
XML, XML Databases and MPEG-7
 
Xml
XmlXml
Xml
 
Fatah Uddin (072831056)
Fatah Uddin (072831056)Fatah Uddin (072831056)
Fatah Uddin (072831056)
 
introduction and basic of web development
introduction and basic of web developmentintroduction and basic of web development
introduction and basic of web development
 
Introduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTIntroduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoT
 
Introduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTIntroduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoT
 
Introduction to xml
Introduction to xmlIntroduction to xml
Introduction to xml
 
EXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALA
EXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALAEXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALA
EXTENSIBLE MARKUP LANGUAGE BY SAIKIRAN PANJALA
 
Ample SDK - Open Source GUI Framework
Ample SDK - Open Source GUI FrameworkAmple SDK - Open Source GUI Framework
Ample SDK - Open Source GUI Framework
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xml
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xmlXml theory 2005_[ngohaianh.info]_1_introduction-to-xml
Xml theory 2005_[ngohaianh.info]_1_introduction-to-xml
 
Verification Automation Using IPXACT
Verification Automation Using IPXACTVerification Automation Using IPXACT
Verification Automation Using IPXACT
 

Último

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
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