Schemas Richard Hopkins National e-Science Centre, Edinburgh

Slides:



Advertisements
Similar presentations
Module 3 XML Schema.
Advertisements

Managing XML and Semistructured Data Lecture 12: XML Schema Prof. Dan Suciu Spring 2001.
1 Web Data Management XML Schema. 2 In this lecture XML Schemas Elements v. Types Regular expressions Expressive power Resources W3C Draft:
XML 6.5 XML Schema (XSD) 6. What is XML Schema? The origin of schema  XML Schema documents are used to define and validate the content and structure.
1 XML DTD & XML Schema Monica Farrow G30
CSE 636 Data Integration XML Schema. 2 XML Schemas W3C Recommendation: Generalizes DTDs Uses XML syntax Two documents: structure.
XML Schema Definition Language
XML Simple Types CSPP51038 shortcourse. Simple Types Recall that simple types are composed of text-only values. All attributes are of simple type Elements.
1 XML Schemas Marco Mesiti This Presentation has been extracted from Roger L. Costello (XML Technologies Course)
XML Schemas and Namespaces Lecture 11, 07/10/02. BookStore.dtd.
1 Week5 – Schema Why Schema? Schemas vs. DTDs Introduction – W3C vs. Microsoft XDR Schema, How To? Element Types – Simple vs. Complex Attributes Restrictions/Facets.
XML Schemas. “Schemas” is a general term--DTDs are a form of XML schemas –According to the dictionary, a schema is “a structured framework or plan” When.
Enabling Grids for E-sciencE ISSGC’05 XML Schemas (XSD) Richard Hopkins, National e-Science Centre, Edinburgh June 2005.
Sunday, June 28, 2015 Abdelali ZAHI : FALL 2003 : XML Schemas XML Schemas Presented By : Abdelali ZAHI Instructor : Dr H.Haddouti.
XML Schema Basics SD2520 Databases using XML and Jquery Chapter 12
Introduction to XML This material is based heavily on the tutorial by the same name at
Processing of structured documents Spring 2003, Part 3 Helena Ahonen-Myka.
17 Apr 2002 XML Schema Andy Clark. What is it? A grammar definition language – Like DTDs but better Uses XML syntax – Defined by W3C Primary features.
XP New Perspectives on XML Tutorial 4 1 XML Schema Tutorial – Carey ISBN Working with Namespaces and Schemas.
Enabling Grids for E-sciencE Schemas Richard Hopkins National e-Science Centre, Edinburgh February 23 /
Why XML ? Problems with HTML HTML design - HTML is intended for presentation of information as Web pages. - HTML contains a fixed set of markup tags. This.
IS432 Semi-Structured Data Lecture 3: XSchema Dr. Gamal Al-Shorbagy.
XML Schema Vinod Kumar Kayartaya. What is XML Schema?  XML Schema is an XML based alternative to DTD  An XML schema describes the structure of an XML.
1 XML Schemas. 2 Useful Links Schema tutorial links:
Dr. Azeddine Chikh IS446: Internet Software Development.
Copyright © [2001]. Roger L. Costello. All Rights Reserved. 1 XML Schemas (Primer)
McGraw-Hill/Irwin © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. Schemas Ellen Pearlman Eileen Mullin Programming the Web Using XML.
XML and friends Part 2 - XML Schema ELAG 2001 workshop 8 Jan Erik Kofoed © BIBSYS Library Automation.
Li Tak Sing COMPS311F. XML Schemas XML Schema is a more powerful alternative to DTD to describe XML document structures. The XML Schema language is also.
Creating Data Schemas Presentation by Chad Borer 2/6/2006.
1 CIS336 Website design, implementation and management (also Semester 2 of CIS219, CIS221 and IT226) Lecture 6 XSLT (Based on Møller and Schwartzbach,
Session IV Chapter 9 – XML Schemas
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui SWEN 432 Advanced Database Design and Implementation XML Schema 2 Lecturer.
Enabling Grids for E-sciencE PPARC Summer School, May 2005 Schemas (and XML) Richard Hopkins, National e-Science Centre, Edinburgh.
Beginning XML 4th Edition. Chapter 5: XML Schemas.
New Perspectives on XML, 2nd Edition
XML Schema. Why Schema? To define a class of XML documents Serve same purpose as DTD “Instance document" used for XML document conforming to schema.
Schemas 1www.tech.findforinfo.com. What is a Schema a schematic or preliminary plan Description of a structure, details... 2www.tech.findforinfo.com.
XML – Part III. The Element … This type of element either has the element content or the mixed content (child element and data) The attributes of the.
An Introduction to XML Sandeep Bhattaram
1 CIS336 Website design, implementation and management (also Semester 2 of CIS219, CIS221 and IT226) Lecture 5 XML Schema (Based on Møller and Schwartzbach,
Sheet 1XML Technology in E-Commerce 2001Lecture 2 XML Technology in E-Commerce Lecture 2 Logical and Physical Structure, Validity, DTD, XML Schema.
XML 2nd EDITION Tutorial 4 Working With Schemas. XP Schemas A schema is an XML document that defines the content and structure of one or more XML documents.
1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary.
Tutorial 13 Validating Documents with Schemas
Management of XML and Semistructured Data Lecture 11: Schemas Wednesday, May 2nd, 2001.
Processing of structured documents Spring 2003, Part 3 Helena Ahonen-Myka.
XML Validation II Schemas Robin Burke ECT 360. Outline Namespaces Documents  Data types XML Schemas Elements Attributes Derived data types RELAX NG.
Primer on XML Schema CSE 544 April, XML Schemas Generalizes DTDs Uses XML syntax Two parts: structure and datatypes Very complex –criticized –alternative.
QUALITY CONTROL WITH SCHEMAS CSC1310 Fall BASIS CONCEPTS SchemaSchema is a pass-or-fail test for document Schema is a minimum set of requirements.
Introduction to XML Schema John Arnett, MSc Standards Modeller Information and Statistics Division NHSScotland Tel: (x2073)
CSE 6331 © Leonidas Fegaras XML Schema 1 XML Schema Leonidas Fegaras.
XSD: XML Schema Language Kanda Runapongsa Dept. of Computer Engineering Khon Kaen University.
XML Schema Definition (XSD). Definition of a Schema It is a model for describing the structure and content of data The XML Schema was developed as a content.
Lecture 0 W3C XML Schema. Topics Status Motivation Simple type vs. complex type.
XML Validation. a simple element containing text attribute; attributes provide additional information about an element and consist of a name value pair;
XML Schema – Simple Type Web site:
CITA 330 Section 4 XML Schema. XML Schema (XSD) An alternative industry standard for defining XML dialects More expressive than DTD Using XML syntax Promoting.
4 Copyright © 2004, Oracle. All rights reserved. Validating XML by Using XML Schema.
Extensible Markup Language (XML) Pat Morin COMP 2405.
XML Schemas Dr. Awad Khalil Computer Science Department AUC.
CMP 051 XML Introduction Session IV
Data Modeling II XML Schema & JAXB Marc Dumontier May 4, 2004
ISSGC’05 XML Schemas (XSD)
Design and Implementation of Software for the Web
THE DATATYPES OF XML SCHEMA A Practical Introduction
CMP 051 XML Introduction Session IV Chapter 10 – Defining Simple Types
CMP 051 XML Introduction Session III
XML Technologies X-Schema.
New Perspectives on XML
Presentation transcript:

Schemas Richard Hopkins National e-Science Centre, Edinburgh 13/09/2018 Schemas Richard Hopkins National e-Science Centre, Edinburgh February 23 / 24 2005 Web Services and WSRF, Feb 23/4 2005, NesSC

OUTLINE Goals Outline To be able to construct and read an XML Schema To be able to use the XMLspy tool for that Outline General Structure Simple Types Miscellany Extensibility Concluding Remarks Practical Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

XML(SPY) A Schema defines the syntax for an XML language An XML document can have an associated Schema It is valid if it meets the syntax rules of that schema This can import syntax for (parts of) other languages Much like programming language type declarations But some peculiarities XMLSPY (free edition) Provides a graphical representation of a Schema Provides for checking a XML document for validity with respect to a specified Schema I Will use graphical notation of XMLSPY Example files (download from http://homepages.nesc.ac.uk/~gcw/WSRF/ POexample.xsd – a Schema POexample.xml – an instance of POexample.xsd Schema Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Example Schema Structure annotation Here is a Schema attribute units ann: Metric or Imperial simpleType dateT ann: DD/MM/YYYY or MM/DD/YYYY simpleType accNoT ann: Account Number format simpleType prodCodeT ann: Product Code format ☺complexType entryT ann: A PO entry for one ordered item ☺element note ann: An annotation on the document ☺element addr ann: A UK address ☺element PO ann: A Purchase Order Top level of XMLspy - ☺(expandable) name ann: annotation Global items - can be directly referenced, here or externally attribute – declares a type of attribute for use in elements annotation – supplementatry info for human / m/c processing simpleType – declares an element type without components complexType – declares an element type with components Each component is an anonymous simple type or complex type element – declares an element with components – like a template Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Example Schema Structure 13/09/2018 Example Schema Structure annotation Here is a Schema attribute units ann: Metric or Imperial simpleType dateT ann: DD/MM/YYYY or MM/DD/YYYY simpleType accNoT ann: Account Number format simpleType prodCodeT ann: Product Code format ☺complexType entryT ann: A PO entry for one ordered item ☺element note ann: An annotation on the document ☺element addr ann: A UK address ☺element PO ann: A Purchase Order An element is a “element type” that could be the root element of the XML document – PO Can be referenced from elsewhere as a way of giving the type of a component – addr and note – an alternative to defining types addrT and noteT element-referencing is more limited than typing ???? no guidelines on when this is a good idea?????? Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas Web Services and WSRF, Feb 23/4 2005, NesSC

Element Structuring <PO> <date> <USdate> … </> SCHEMAS Element Structuring 13/09/2018 <PO> <date> <USdate> … </> </> <account> …. <accNo> … </> <bill> <addr>…</> <terms>7-day</> <deliver> <note> …. </> <note> … </> <entry> … </> …. USdate dateT date UKdate dateT accNo accNoT addr PO account deliver specialInstr xs:string ; 0..50 addr bill terms Date vs DateT - instance and type name addr – no separate type name – must have the same instance name in all occurrences Also in tool can change its characteristic via any route note 0..3 xs:string ; {“7-day”, “28-day”, “end-of-month”} entry entryT; 1..* Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas Web Services and WSRF, Feb 23/4 2005, NesSC

Element Structuring prodCode prodCodeT <entry> <prodCode>ABC-12345<> any old text <quant units=“metric”>17.354</> </> mixed entryT quant Xs:decimal collect – Optional xs:boolean; default=“false” units - required Note (0..1) Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Element Structuring prodCode prodCodeT <entry> <prodCode>ABC-12345<> any old text <quant units=“metric”>17.354</> </> mixed entryT quant Xs:decimal collect – Optional xs:boolean; default=“false” units - required Note (0..1) street xs:string ; 1..50 accNoT xs:string [A-Z]?\d{3}-[A-Z]{3} addr city xs:string ; 1..50 postCode xs:string ; 6..8 dateT xs:string \d{2}/\d{2}/\d{4} note xs:string ; 1..* prodCodeT xs:string [A-Z]{2,4}-\d{4,8} Attribute declarations units xs:string ; {“metric”, “imperial”} Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Complex Content - Features Mixed, nillable A A A entryT date account B B B collect – optional Complex Content – Mixed if so text can be intermixed with element components <entry> <prodCode>ABC-12345</> any old text <quant units=“metric”> 17.354</> </> Nillable (element property) validated element can have attribute xsi:nil = “true” (and no content) Model Sequence – All of the A, B, …components occur in that order Choice – One of the A, B, … components occurs For these a “component” might be empty/repeated All – All of the A, B, … component occurs, in any order For this, a component might be empty, but can’t be repeated Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Complex Content - Features 0..* Multiplicities Each child element may itself represent optional and/or repeating elements The constructor sequence/choice/all may itself be optional/repeating Nesting The constructor may have constructor as immediate descendant Except ALL can’t combine with another constructor Restriction is to improve parasability Regular expression of child elements ( ( (A? | B*)* | (C D)* )? ((E F)*|(G | H)* If exclude ALL and only 1..1, 0..1 and 0..* A 0..1 0..1 B 0..* C 0..* D Test 0..* 0..* E F G 1..* H 0..* Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Actual XML 0..1 0..* Test A xs:anySimpleType <xs:element name="Test“ nillable=“true” > <xs:complexType mixed=“true”> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:choice minOccurs="0"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="A" type="xs:anySimpleType " minOccurs="0" /> <xs:element name="B" minOccurs="0" maxOccurs="unbounded"/></> <xs:element name="C" type="xs:anySimpleType"/> <xs:element name="D" type="xs:anySimpleType"/></></> <xs:choice maxOccurs="unbounded"> <xs:element name="E" type="xs:anySimpleType"/> <xs:element name="F" type="xs:anySimpleType"/></> <xs:element name="G" type="xs:anySimpleType"/> <xs:element name="H" type="xs:anySimpleType"/></></></></></> Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Empty Content No components <xs:element name="Test2"> <xs:complexType> <xs:attribute name="units"/> <xs:attribute name="quantity" type="xs:decimal"/ </xs:complexType></> <Test2 units=“metric” quantity=“12.3/> No components All information is in existence of the item and its attributes (if any) Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

SIMPLE TYPES Goals Outline To be able to construct and read an XML Schema To be able to use the XMLspy tool for that Outline General Structure Simple Types Miscellany Extensibility Concluding Remarks Practical Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Simple Types/Elements General features minOcc, maxOcc – repetition Default/Fixed – Default - the value given if absent Fixed – as default, but if specified, must be this value Nillable – can have attribute xsi:nil=“true” Derivation - Restriction – some restriction on a base simple type String matching [A-Z]?\d{3}-[A-Z]{3} ; integer x, 4<x<23 ; … List – space-separated list of instances of a base simple type A44793 632981 a564 Union – any one of a number of different simple types UKdate or USdate Instance needs <Date xsi:type=“USdate”>12/31/2004</> Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Derivation Types Derivation Base type – e.g. string, integer, defined simple type Facets Lengths - length, maxLength,minLength whiteSpace preserve replace – tab, newline, linefeed all replaced by space character collapse – do replace and then collapse multiple spaces to one Limits – minInclusive, maxInclusive, minExclusive, maxExclusive Digits – totalDigits, fractionalDigits – (value range and accurracy) pattern – regular expression [A-Z] [^a-z] [(A-Z)-[MN]] {3,6} {,7} {3} \d . | ? * + enumeration – list of allowed values Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Primitive Types and their facets List Lengths,pattern, enumeration Union pattern, enumeration Atomic - string Lengths, pattern, enumeration, whiteSpace Boolean pattern, whiteSpace “1”, “0”, “true”, “false” Float pattern, enumeration, whiteSpace, Limits “17.54E3”, “INF”, “NAN” Double pattern, enumeration, whiteSpace, Limits Decimal Digits, pattern, whiteSpace, enumeration, Limits “+12.34”, “17” hexBinary Lengths, pattern, enumeration, whiteSpace "0FB7" base64Binary Lengths, pattern, enumeration, whiteSpace “aAb9” anyURI Lengths, pattern, enumeration, whiteSpace QName Lengths, pattern, enumeration, whiteSpace “xsd:element” NOTATION Lengths, pattern, enumeration Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Primitive Types duration pattern, enumeration, whiteSpace, Limits “P1Y2M3DT10H30M” dateTime pattern, enumeration, whiteSpace, Limits “2002-10-10T12:00:00” time pattern, enumeration, whiteSpace, Limits “13:20:00-05:00” date pattern, enumeration, whiteSpace, Limits “2002-10-10” gYearMonth pattern, enumeration, whiteSpace, Limits “1999-05” gYear pattern, enumeration, whiteSpace, Limits gMonthDay pattern, enumeration, whiteSpace, Limits gDay pattern, enumeration, whiteSpace, Limits gMonth pattern, enumeration, whiteSpace, Limits Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Built in (derived Types) anyType Union of them all Complex types anySimpleType Primitives – decimal, string, anyURI, QName, boolean, float, Times/Durations, Binaries Derived by restriction decimal – Integer nonPositiveInteger …. string normalisedString each whitespace character become a space token Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Tokens token Derivations of token A string with no leading or training spaces and only single spaces elsewhere “This is a Token” “ This is not “ A tokenized string Derivations of token Corresponding to various XML constructs (to ease definition and parsing of XML documents) – name language Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

MISCELLANY Goals Outline To be able to construct and read an XML Schema To be able to use the XMLspy tool for that Outline General Structure Simple Types Miscellany Extensibility Concluding Remarks Practical Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Attributes Declarations Attribute has properties – Some simple type Default/fixed Use – optional (default), prohibited, required <xs:attribute name="TestA" use="required" fixed="fixation"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="22"/> <xs:minLength value="1"/> <xs:maxLength value="4"/> <xs:whiteSpace value="replace"/> <xs:pattern value="a|b"/> <xs:enumeration value="type1"/> <xs:enumeration value="type2"/></></></> Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Annotations To annotate a schema for the benefit of human readers – a documentation element Applications – an appinfo element <xs:element name="PO"> <xs:annotation> <xs:documentation>A Purchase Order</> <xs:appinfo>How to do it</></> …. </> annotation Here is a Schema attribute units ann: Metric or Imperial simpleType dateT ann: DD/MM/YYYY or MM/DD/YYYY …. date PO A Purchase Order Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Namespaces –Target Namespace <?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSPY … --> <xs:schema elementFormDefault=“unqualified“ attributeFormDefault="unqualified" xmlns:xs=http://www.w3.org/2001/XMLSchema targetNameSpace= “http://company.org/forms/namespace” xmlns=“http://company.org/forms/namespace”> <xs:element name=“outer”> ….<xs:element name=“inner”> ….</> …. </> <xs:attribute name=“att1“ …>…</> </> The name of the language for which this schema defines the syntax This schema will only validate an instance if its namespace matches - <?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSPY … --> <it:outer xmlns:it= http://company.org/forms/namespace it.att1=“…”> <inner> …</> <inner> … </></> If schema has no targetNameSpace – it can only validate un-qualified names Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Qualification Form The root element name has to be qualified SCHEMAS 13/09/2018 Qualification Form <xs:schema elementFormDefault=“unqualified“ attributeFormDefault=“unqualified" <xs:element name=“outer”> ….<xs:element name=“inner”> ….</> …. </> <xs:attribute name=“att1“ …>…</> </> <it:outer xmlns:it= http://company.org/forms/namespace att1=“…”> <inner> …</> … </> The root element name has to be qualified This requires other names to be unqualified <xs:schema elementFormDefault=“qualified“ attributeFormDefault=“qualified" <xs:element name=“outer”> ….<xs:element name=“inner”> ….</> …. </> <xs:attribute name=“att1“ …>…</> </> I find this area reallu confusing, e.g. – If there is a default namespace, is any name “unqualified” <it:outer xmlns:it= http://company.org/forms/namespace it:att1=“…”> <it:inner> …</> … </> This Requires other names also to be qualified Can override the defaults by defining form for an element Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas Web Services and WSRF, Feb 23/4 2005, NesSC

Qualification Form Normal is Equivalent to Schema requires qualified names, unqualified attributes Instance uses default qualifier (only applies to element names) <xs:schema elementFormDefault=“qualified“ attributeFormDefault=“unqualified" <xs:element name=“outer”> ….<xs:element name=“inner”> ….</> …. </> <xs:attribute name=“att1“ …>…</> </> <outer xmlns:= http://company.org/forms/namespace att1=“…”> <inner> …</> … </> Equivalent to <it:outer xmlns:it= http://company.org/forms/namespace att1=“…”> <it:inner> …</> … </> Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Include …www… /Forms/PO.xsd …www… /Forms/main.xsd <schema targetNameSpace= “…www. …/forms/ns”> <include schemaLocation= “…www…/Forms/Types.xsd"/> <element name=“PO“> ….</></> <schema targetNameSpace= “…www. …/forms/ns”> <include schemaLocation= “…www…/Forms/PO.xsd"/> “…www…/Forms/SE.xsd"/> …www… /Forms/Types.xsd <schema targetNameSpace= “…www. …/forms/ns”> <simpleType name= “AccNoT“> ….</> ….other types ….</> All must be same target namespace Forms one logical schema as the combination of physically distinct schemas I.e. refernceing main as the schema allows document to be an PO or an SE (stock enquiry) Allows individual document definitions to share type definitions …www… /Forms/SE.xsd <schema targetNameSpace= “…www. …/forms/ns”> <include schemaLocation= “…www…/Forms/Types.xsd"/> <element name=“SE“> ….</></> Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Importation Include is to distribute the definition of this namespace (language) over multiple Schema definitions Import is to allow use of other namespaces (languages) in the definition for this language. …www… /Standards.xsd …www… /Forms/PO.xsd <schema targetNameSpace= “…www. …/Standards/ns” > <simpleType name= “USdateT“> ….</> ….other types ….</> <schema targetNameSpace= “…www. …/forms/ns” xmlns:st =“…www…/Standards/ns” > <import namespace= “…www…/Standards/ns” schemaLocation= “…www… /Standards.xsd” > <element name=“PO“> …. <name=“date” type=“st:USdateT”\>…</> </></> Must have namespace definition for import’s namespace Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

EXTENSIBILITY Goals Outline To be able to construct and read an XML Schema To be able to use the XMLspy tool for that Outline General Structure Simple Types Miscellany Extensibility Concluding Remarks Practical Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Don’t Care Content xlmns:me = “….” Xlmns:you=”…” - - - - - - - - - - - - - - - - <you:PO> <you:date> … </> <you:account> … </> <you:MyRef> <me:authority>…</> <me:chargeCode> </> </> <you:entry> ….</> </you:PO> date account note MyRef Type=“xsi:any” PO entry Allow the originator to include their own information MyRef’s do not need to be understood by this appication Just copied back in the invoice/statement as YourRef This style, using “any” type Completely unconstrained Requires a containing element, called MyRef Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Don’t Care too much Content xlmns:st = “… standards/ns”” Xlmns:you=”…” - - - - - - - - - - - - - - - - <you:PO> <you:date> … </> <you:account> … </> <you:MyRef> <st:authority>…</> <st:chargeCode> </> </> <entry> ….</> </you:PO> date account note MyRef any PO namespace= “…www…/Standards/ns” entry Use a new kind of component, <any namespace=“…” …./> instead of <element name=“X” …> … </> This is an Extension point – a place where this languages can be extended with an element from some other language This style, using “any” element Constrained – what can be provided should be defined in the specified namespace Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Any Elements Schema Namespace options, “X” = “##any” <xs:element name="PO"> <xs:complexType> <xs:sequence> <xs:element name="date">…</> … <xs:any namespace=“X” processContents=“Y” minOccurs=“0” maxOcurrs =“ubounded”/> … </></></> date MyRef any PO namespace=“X” processContents=“Y” Namespace options, “X” = “##any” “##local” this namespace “##other” anything but this namespace “ wwx.NS1 www.NS2 …” whitespace-separated list of namespace names, Can include “##targetnamespace Processing options, “Y” = “skip” – no validation “strict” – must obtain the namespace schema and validate the conten “lax” – validate what you can Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Evolution The loose-coupling principles of web services means that a schema should allow for change which is Forward compatible – newer versions of documents can be used by old S/W: new producer, old consumer Backward Compatible – older versions of documents can be used by newer S/W : old producer, new consumer Evolving may be by New Versions – the original authors enhancing the language New Extensions – others enhancing the language An Any element (wildcard) is an explicit extension point that allow compatability as the language evolves Typically, for every complex element Make the last component an Any which occurs 0..* times For versioning, make it ##local For extensions, make it ##other Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Obtaining Compatibility date prodCode prodCode account entryT quant entryT quant note Note Note entry any lax urgency PO any any matches lax Version V1 Version V2 lax – gives forward compatiblity V1 consumer (coded using V1 schema) can process document produced by V2 producer Optionality on new item gives backward compatibility V2 consumer can process document produced by V1 producer If compatibility is not the reality – use a new namespace name for the new version Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Determinism Requirement prodCode <entry> <prodCode>…</> <quant>…</> <note>…</> <urgency> ...</> <somethingElse>…</> </> entryT quant note matches urgency any lax V2 schema V2 ninstance When “parsing” the instance, The note in instance could correspond to The note in schema The any in schema The Schema standard prohibits this non-determinism Can’t have an Any within Choice or All Can’t have an Any before or after a variable occurrence component. If disjoint namespaces then not a problem – <any namespace=“##other”> The namespace will indicate whether something matches the Any Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Design for Deterministic Extensibilty I date date account account note note entry entries entry PO PO fix any violation any prodCode prodCode entryT quant entryT quant note note V2options fix urgency urgency any lax any lax violation Put variable occurrence structure within a mandatory single-occurrence container Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Design for Deterministic Extensibilty II SCHEMAS 13/09/2018 Design for Deterministic Extensibilty II prodCode prodCode prodCode entryT entryT entryT quant quant quant V2options V2options V2options V1 any lax V3el1 V3ext violation V3options V3el2 V3el1 V2 any lax V2# any V3el2 lax Problem with B its any for second extension Solutions (?) Make at least V2el2 mandatory, losing backward compatibility – V1 document fails against V2 processor Remove the extension point, losing forward compatibility New shema has to be new namespace – V1 processor can’t deal with V2 document Solution -V2# - Nest Extensions – yes, but cumbersome Viewed as alimitation of Schema rules – should not have the determinism requirement? Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas Web Services and WSRF, Feb 23/4 2005, NesSC

Any Attributes Same concept as Any elements Can’t constrain how many SCHEMAS 13/09/2018 Any Attributes <xs:complexType name="entryT"> <xs:sequence> … </xs:> <xs:attribute name="collect" type="xs:boolean" use="optional" default="false"/> <anyAttribute namespace=“##any” processContents=“lax>” </> Same concept as Any elements procesContents – lax / strict / skip namespace allowed – ##other etc. Can’t constrain how many Don’t have determinism issues Because no order or repitition Optionality still !! Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas Web Services and WSRF, Feb 23/4 2005, NesSC

Further Aspects Uniqueness and key Constraints Complex Type Derivation Final and Abstract Groups Attribute Element Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

PRACTICAL Goals Outline To be able to construct and read an XML Schema To be able to use the XMLspy tool for that Outline General Structure Simple Types Miscellany Extensibility Concluding Remarks Practical Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

Practical Use XMLSPY to construct a schema for an invoice/statement document Similar to a PO document, http://homepages.nesc.ac.uk/~gcw/WSRF/ Entry has Unit price Cost Optional VAT rate and amount PO number Additionally a list of POs covered by the Invoice, each having the following information taken from the PO PO date PO notes A PO number (allocated by us) Includes Extension points – do on text representation Construct an XML document with that as its schema Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas

THE END The End SCHEMAS 13/09/2018 Web Services and WSRF, 24/25 Feb 2005, NeSc -- Schemas Web Services and WSRF, Feb 23/4 2005, NesSC