validating xml - avoiding the pain

Post on 18-May-2015

1.674 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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.

TRANSCRIPT

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

PHPeZ ComponentsPHPUnit

Arne Blankerts, Tobias Schlitt (IPC 2009) Validating XML - Avoiding the pain 2009-11-17 4 / 18

Outline

1 Welcome

2 IntroductionWhy 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 formatsOverviewDTDXML 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 DefinitionPart of the XML specificationAllows definition of entitiesNo advanced type supportDoes 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 SchemaW3C recommendation since May 2001Advanced type supportSupport for keys and key referencesNo 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 GenerationDefined by OASIS, ISO/IEC 19757Generally more powerful than XSDNo support for entitiesNot (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

strictskiplax

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 & Supporthttp://schlitt.info/opensourceOn 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

top related