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

XML Schema Patterns for Databinding

Embed Size (px)

DESCRIPTION

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

Citation preview

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