xml schema patterns for databinding

78
W3C XML Schema Patterns for Databinding Paul Downey, BT Chair, XML Schema Patterns for Databinding Working Group XML 2006, December 5th 2006

Upload: paul-downey

Post on 15-May-2015

2.612 views

Category:

Technology


0 download

DESCRIPTION

http://2006.xmlconference.org/programme/presentations/43.html

TRANSCRIPT

Page 1: XML Schema Patterns for Databinding

W3C XML Schema

Patterns for Databinding

Paul Downey, BT

Chair, XML Schema Patterns for Databinding Working Group

XML 2006, December 5th 2006

Page 2: XML Schema Patterns for Databinding

XML Schema

?

Page 3: XML Schema Patterns for Databinding

Validation

Schema

Processor

XML

Instance

XML

Schema

Post

Schema

Validation

Infoset

Page 4: XML Schema Patterns for Databinding

Description

SenderXML

Instance

XML

Schema

Receiver

Page 5: XML Schema Patterns for Databinding

Types

XML

xs:string

xs:int

foo:PurchaseOrder

tns:Address

Page 6: XML Schema Patterns for Databinding

Databinding

?

Page 7: XML Schema Patterns for Databinding

Databinding ≡ Abstraction

Model XML

Page 8: XML Schema Patterns for Databinding

Model

• Java

• Database

• Annotated DOM

• JSON

• PHP serialisation

• XML

• Whatever

Page 9: XML Schema Patterns for Databinding

Why Describe

?

Page 10: XML Schema Patterns for Databinding

Duck Typing XML

?

Page 11: XML Schema Patterns for Databinding

Force Array

<opt> <name>value</name></opt>

<opt> <name>value1</name> <name>value2</name></opt>

{ name => ‘value’}

{ name => [ ‘value1’, ‘value2’ ]}

Page 12: XML Schema Patterns for Databinding

Static Typing

{ int accountNo; long ammount; string name;}

Page 13: XML Schema Patterns for Databinding

What’s wrong with Databinding

?

Page 14: XML Schema Patterns for Databinding

“State of the Art”

• reject valid XML Schema documents

• reject valid XML instance documents

• content of valid XML instance documents often unavailable in model

Page 15: XML Schema Patterns for Databinding

Impedance Mismatch

><OO

Page 16: XML Schema Patterns for Databinding

Circles, Triangles, Rectangles

XML 2003

http://www.idealliance.org/papers/dx_xml03/papers/06-02-01/06-02-01.html

Page 17: XML Schema Patterns for Databinding

I ! Mixed Content

text <O/> text

<O> text </O>

Page 18: XML Schema Patterns for Databinding

Don’t Databind?

• XSLT

• DOM

• LINQ

• E4X

• XJ

• etc

Page 19: XML Schema Patterns for Databinding

Abstraction Scale

XML

Text

InfosetObjects

DOMTypedDOM

Bits

Templating

Page 20: XML Schema Patterns for Databinding

They Don’t Like XML!

Page 21: XML Schema Patterns for Databinding

Abstraction

?

Page 22: XML Schema Patterns for Databinding

XML Schema is Big ..

• Lot’s of ways to describe the concrete

• Lot’s of ways to represent the abstract

Page 23: XML Schema Patterns for Databinding

Partial Implementations

“Our tool doesn’t support xs:foo.Change your schema.”

* vendor

Page 24: XML Schema Patterns for Databinding

“The Barf Dance”

So begins ..

Page 25: XML Schema Patterns for Databinding

it’s not so much that schema sucks ...

Page 26: XML Schema Patterns for Databinding

or that databinding tools suck ...

Page 27: XML Schema Patterns for Databinding

it’s that all databinding tools suck

differently

Page 28: XML Schema Patterns for Databinding

W3C Working Group

?

Page 29: XML Schema Patterns for Databinding

WS-I

• Basic Profile

• XML Schema Work Plan Working Group

Page 30: XML Schema Patterns for Databinding

W3C WorkshopXML Schema 1.0 User Experiences

Page 31: XML Schema Patterns for Databinding

Discussion

Page 32: XML Schema Patterns for Databinding

Don’t Just Change Schema!

… 300,000+ developers use XSD … There is tremendous value in XML Schema. Don't just change it…

Soumitra Sengupta,Microsoft

Page 33: XML Schema Patterns for Databinding

Discussion Topics

• versioning

• profiles and patterns of use

• code generation (v) validation

• Unique Particle Attribution (UPA)

• XML Schema 1.1

• test suite

Page 34: XML Schema Patterns for Databinding

W3C XML Schema Patterns for Databinding

Working Group

!

Page 35: XML Schema Patterns for Databinding

Deliverables

• W3C Recommendation for Basic Patterns

• W3C Recommendation for Advanced Patterns

• Test Suite

• Mechanism to Detect patterns

Page 36: XML Schema Patterns for Databinding

Out of Scope:

• Profile of Schema

• Language Specific Detail

Page 37: XML Schema Patterns for Databinding

Patterns

!

Page 38: XML Schema Patterns for Databinding

AnyURIElement

.//xs:element/@type[resolve-QName(.,..) = xs:QName('xs:anyURI')]

http://www.w3.org/2002/ws/databinding/patterns/6/09/AnyURIElement

<xs:element name="anyURIElement"

type="xs:anyURI" />

Page 39: XML Schema Patterns for Databinding

ElementMinOccurs0MaxOccursUnbounded

.//xs:element[@minOccurs = '0' and @maxOccurs = 'unbounded']/ (@minOccurs, @maxOccurs)

http://www.w3.org/2002/ws/databinding/patterns/6/09/ElementMinOccurs0MaxOccursUnbounded

Page 40: XML Schema Patterns for Databinding

SequenceSingleRepeatedElement

.//xs:sequence[count(xs:element) = 1]/ xs:element[@maxOccurs = 'unbounded']/ (., @maxOccurs)

http://www.w3.org/2002/ws/databinding/patterns/6/09/SequenceSingleRepeatedElement

Overlapping!

Page 41: XML Schema Patterns for Databinding

StringEnumerationType

.//xs:simpleType/xs:restriction[ @base/resolve-QName(.,..) = xs:QName('xs:string') and xs:enumeration]/ (., @base, xs:enumeration/(., @value))

http://www.w3.org/2002/ws/databinding/patterns/6/09/StringEnumerationType

<xs:simpleType name="Beatle">

<xs:restriction base="xs:string"> <xs:enumeration value="John" /> <xs:enumeration value="Paul" /> <xs:enumeration value="George" /> <xs:enumeration value="Ringo" /> </xs:restriction>

Page 42: XML Schema Patterns for Databinding

SOAP Encoded Array

./xs:complexType[@name]/xs:complexContent/ xs:restriction[ @base/resolve-QName(.,..) = xs:QName ('soap11enc:Array')]/ xs:attribute[(@ref/resolve-QName(.,..) = xs:QName('soap11enc:arrayType')) and @wsdl11:arrayType]/(../.., ../(., @base), ., @ref, @wsdl11:arrayType)

http://www.w3.org/2002/ws/databinding/patterns/6/09/SOAPEncodedArray

Page 43: XML Schema Patterns for Databinding

Palatability

?

Page 44: XML Schema Patterns for Databinding

Value Judgement

• xs:any becomes XMLElement

• xs:anyURI becomes String

• xs:decimal becomes String

Page 45: XML Schema Patterns for Databinding

Examples

!

Page 46: XML Schema Patterns for Databinding

ElementMinOccurs0MaxOccursUnbounded

<xs:element name="durationList" type="ex:DurationList" />

<xs:complexType name="DurationList">

<xs:sequence>

<xs:element name="durationValue" type="xs:short"

! ! ! ! ! minOccurs="0" maxOccurs="unbounded" />

</xs:sequence>

</xs:complexType>

http://www.w3.org/2002/ws/databinding/examples/6/09/ElementMinOccurs0MaxOccursUnbounded

Page 47: XML Schema Patterns for Databinding

Example Descriptions

• ComplexTypeSequenceExtension.xsd

• echoComplexTypeSequenceExtension.xsd

• echoComplexTypeSequenceExtension.wsdl

• echoComplexTypeSequenceExtension-wsdl20.wsdl

Page 48: XML Schema Patterns for Databinding

Example Instances

• ElementMinOccurs0MaxOccursUnbounded-01.xml

• echoElementMinOccurs0MaxOccursUnbounded-01.xml

• echoElementMinOccurs0MaxOccursUnbounded-01-soap11.xml

• echoElementMinOccurs0MaxOccursUnbounded-01-soap12.xml

Page 49: XML Schema Patterns for Databinding

Test Suite

Toolkit

Output

Example

Description

Instance

Model

Page 50: XML Schema Patterns for Databinding

Test Reports

Page 51: XML Schema Patterns for Databinding

Patterns Detector

!

Page 52: XML Schema Patterns for Databinding

Patterns Detector

DetectorPatterns

(URIs)XML

Schema

Page 53: XML Schema Patterns for Databinding
Page 54: XML Schema Patterns for Databinding
Page 55: XML Schema Patterns for Databinding

Buckets

!

Page 56: XML Schema Patterns for Databinding

Basic Patterns

• known to work with “state of the art” implementations

• they’re, um, very Basic

Publishers of Schemas Take Note!

Page 57: XML Schema Patterns for Databinding

TargetNamespace

.[@targetNamespace]/ (., @targetNamespace)

http://www.w3.org/2002/ws/databinding/patterns/6/09/TargetNamespace

An [XML Schema 1.0] document conforming to this

specification MUST define a targetNamespace whose

value is an absolute URI. †

Page 58: XML Schema Patterns for Databinding

“State of the Art”

?

Page 59: XML Schema Patterns for Databinding

SLIPPERY SLOPE

Page 60: XML Schema Patterns for Databinding

Value Judgement

“Bring out your implementations”

• new tools arrive

• old tools become defunct

• some tools are very lame

• we can’t test every tool

Page 61: XML Schema Patterns for Databinding

Advanced Patterns

• exhibited by real schemata

• they’re, um, not very interoperable

Developers of Implementations Take Note!

Page 62: XML Schema Patterns for Databinding

Not Advanced

?

Page 63: XML Schema Patterns for Databinding

SLIPPERY SLOPE

Page 64: XML Schema Patterns for Databinding

Value Judgement

“Bring out your schemata”

• XML Schema is big

• Coverage or Possible to Databind?

• always another Schema

Page 65: XML Schema Patterns for Databinding

Patterns in the Wild

Page 66: XML Schema Patterns for Databinding

Build Your Own Bucket

• List Patterns your schemas use

• List Patterns your toolkit supports

• Analyse schemas “in the wild”

Page 67: XML Schema Patterns for Databinding

Other Topics

?

Page 68: XML Schema Patterns for Databinding

DocumentConformance

ImplementationConformance

Page 69: XML Schema Patterns for Databinding

WS-I Basic Profile

• Detector works on WSDL 1.1

• Composable with Basic Profile 1.1

Page 70: XML Schema Patterns for Databinding

Annotations

• Tools Generate them

• Useful for “round tripping”

• No-one is submitting them

Page 71: XML Schema Patterns for Databinding

Versioning

• Concrete patterns exist

• They’re all Advanced

XML Schema 1.1 is the answer?

Page 72: XML Schema Patterns for Databinding

Progress

?

Page 73: XML Schema Patterns for Databinding

Schedule

Page 74: XML Schema Patterns for Databinding

Participants

• BT

• Health Level 7

• National Association of Convenience Stores (NACS)

• Origo Services Limited

• SAP AG

• WSO2

• Invited Expert: Priscilla Walmsley

... and that’s It!

Page 75: XML Schema Patterns for Databinding
Page 76: XML Schema Patterns for Databinding

We Need Your Help!

www.w3.org/2002/ws/databinding

Page 77: XML Schema Patterns for Databinding

How You Can Help

• Participate in the Working Group

• Encourage your vendor of choice to participate

• Contribute to the test suite

• Contribute your Schemata

www.w3.org/2002/ws/databinding

Page 78: XML Schema Patterns for Databinding

Thank you! Any Questions

?www.w3.org/2002/ws/databinding