An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I....
-
Upload
silvia-conley -
Category
Documents
-
view
226 -
download
0
Transcript of An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I....
![Page 1: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/1.jpg)
An Introduction to XML and Web TechnologiesAn Introduction to XML and Web Technologies
Schema LanguagesSchema Languages
Anders Møller & Michael I. Schwartzbach
2006 Addison-Wesley
![Page 2: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/2.jpg)
MessagesMessages
Thank you for your feedback! About lecture preparation: apologies! About exercise preparation:
2An Introduction to XML and Web Technologies
![Page 3: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/3.jpg)
Please do the exercises before class!Please do the exercises before class!
(With apologies and thanks to those (few!) who do or try.)
![Page 4: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/4.jpg)
4An Introduction to XML and Web Technologies
ObjectivesObjectives
The purpose of using schemas The schema languages DTD and XML Schema
(and DSD2 and RELAX NG) Regular expressions – a commonly used
formalism in schema languages
![Page 5: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/5.jpg)
So, why schemas?So, why schemas?
![Page 6: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/6.jpg)
6An Introduction to XML and Web Technologies
MotivationMotivation
We have designed our Recipe Markup Language ...but so far only informally described its syntax
How can we make tools that check that an XML document is a syntactically correct Recipe Markup Language document (and thus meaningful)?
Implementing a specialized validation tool for Recipe Markup Language is not the solution...
![Page 7: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/7.jpg)
7An Introduction to XML and Web Technologies
Recipe (1/2)Recipe (1/2)
<collection> <description>Recipes suggested by Jane Dow</description>
<recipe id="r117"> <title>Rhubarb Cobbler</title> <date>Wed, 14 Jun 95</date>
<ingredient name="diced rhubarb" amount="2.5" unit="cup"/> <ingredient name="sugar" amount="2" unit="tablespoon"/> <ingredient name="fairly ripe banana" amount="2"/> <ingredient name="cinnamon" amount="0.25" unit="teaspoon"/> <ingredient name="nutmeg" amount="1" unit="dash"/>
<preparation> <step> Combine all and use as cobbler, pie, or crisp. </step> </preparation>
![Page 8: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/8.jpg)
8An Introduction to XML and Web Technologies
Recipe (2/2)Recipe (2/2)
<comment> Rhubarb Cobbler made with bananas as the main sweetener. It was delicious. </comment>
<nutrition calories="170" fat="28%" carbohydrates="58%" protein="14%"/> <related ref="42">Garden Quiche is also yummy</related> </recipe></collection>
![Page 9: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/9.jpg)
9An Introduction to XML and Web Technologies
XML LanguagesXML Languages
XML language: a set of XML documents with some semantics
schema:a formal definition of the syntax of an XML language
schema language:a notation for writing schemas
![Page 10: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/10.jpg)
10An Introduction to XML and Web Technologies
ValidationValidation
instancedocument
schemaprocessor
schema
valid invalid
normalized instance document
errormessage
![Page 11: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/11.jpg)
11An Introduction to XML and Web Technologies
Why use Schemas?Why use Schemas?
Formal but human-readable descriptions
Data validation can be performed with existing schema processors
![Page 12: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/12.jpg)
12An Introduction to XML and Web Technologies
General RequirementsGeneral Requirements
Expressiveness
Efficiency
Comprehensibility
![Page 13: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/13.jpg)
Interlude: regular expressionsInterlude: regular expressions
(Very briefly.)
![Page 14: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/14.jpg)
14An Introduction to XML and Web Technologies
ExamplesExamples
A regular expression describing integers:
0|-?(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*
A regular expression describing the valid contents of table elements in XHTML:
caption? ( col* | colgroup* ) thead? tfoot? ( tbody+ | tr+ )
![Page 15: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/15.jpg)
15An Introduction to XML and Web Technologies
Regular ExpressionsRegular Expressions
Commonly used in schema languages to describe sequences of characters or elements
: an alphabet (typically Unicode characters or element names)
matches the string ? matches zero or one * matches zero or more ’s + matches one or more ’s matches any concatenation of an and a | matches the union of and
![Page 16: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/16.jpg)
DTDDTD
(Simple and insufficient)
![Page 17: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/17.jpg)
17An Introduction to XML and Web Technologies
DTD – Document Type DefinitionDTD – Document Type Definition
Defined as a subset of the DTD formalism from SGML
Specified as an integral part of XML 1.0
A starting point for development of more expressive schema languages
Considers elements, attributes, and character data – processing instructions and comments are mostly ignored
![Page 18: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/18.jpg)
18An Introduction to XML and Web Technologies
RecipeML with DTD (1/2)RecipeML with DTD (1/2)
<!ELEMENT collection (description,recipe*)><!ELEMENT description (#PCDATA)><!ELEMENT recipe
(title,date,ingredient*,preparation,comment?, nutrition,related*)>
<!ATTLIST recipe id ID #IMPLIED><!ELEMENT title (#PCDATA)><!ELEMENT date (#PCDATA)><!ELEMENT ingredient (ingredient*,preparation)?><!ATTLIST ingredient name CDATA #REQUIRED amount CDATA #IMPLIED unit CDATA #IMPLIED>
![Page 19: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/19.jpg)
19An Introduction to XML and Web Technologies
RecipeML with DTD (2/2)RecipeML with DTD (2/2)
<!ELEMENT preparation (step*)><!ELEMENT step (#PCDATA)><!ELEMENT comment (#PCDATA)><!ELEMENT nutrition EMPTY><!ATTLIST nutrition calories CDATA #REQUIRED carbohydrates CDATA #REQUIRED fat CDATA #REQUIRED protein CDATA #REQUIRED alcohol CDATA #IMPLIED><!ELEMENT related EMPTY><!ATTLIST related ref IDREF #REQUIRED>
![Page 20: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/20.jpg)
20An Introduction to XML and Web Technologies
Element DeclarationsElement Declarations
<!ELEMENT element-name content-model >
Content models: EMPTY ANY mixed content: (#PCDATA|e1|e2|...|en)* element content: regular expression over element names
(concatenation is written with “,”)
Example:<!ELEMENT table (caption?,(col*|colgroup*),thead?,tfoot?,(tbody+|tr+)) >
![Page 21: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/21.jpg)
Exercise: DTD Element DescriptionExercise: DTD Element Description
(You have plenty of time)
![Page 22: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/22.jpg)
22An Introduction to XML and Web Technologies
Attribute-List DeclarationsAttribute-List Declarations
<!ATTLIST element-name attribute-definitions >
Each attribute definition consists of an attribute name an attribute type a default declaration
Example:<!ATTLIST input maxlength CDATA #IMPLIED tabindex CDATA #IMPLIED>
![Page 23: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/23.jpg)
23An Introduction to XML and Web Technologies
Attribute TypesAttribute Types
CDATA: any value enumeration: (s1|s2|...|sn) ID: must have unique value IDREF (/ IDREFS): must match some ID attribute(s) ...
Examples:<!ATTLIST p align (left|center|right|justify) #IMPLIED>
<!ATTLIST recipe id ID #IMPLIED><!ATTLIST related ref IDREF #IMPLIED>
![Page 24: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/24.jpg)
24An Introduction to XML and Web Technologies
Attribute Default DeclarationsAttribute Default Declarations
#REQUIRED #IMPLIED (= optional)
”value” (= optional, but default provided)
#FIXED ”value” (= required, must have this value)
Examples: <!ATTLIST form action CDATA #REQUIRED onsubmit CDATA #IMPLIED method (get|post) "get" enctype CDATA "application/x-www-form-urlencoded" >
<!ATTLIST html xmlns CDATA #FIXED "http://www.w3.org/1999/xhtml">
![Page 25: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/25.jpg)
Exercise: DTD Attribute DescriptionExercise: DTD Attribute Description
(You have plenty of time)
![Page 26: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/26.jpg)
26An Introduction to XML and Web Technologies
Document Type DeclarationsDocument Type Declarations
Associates a DTD schema with the instance document
<?xml version="1.1"?><!DOCTYPE collection SYSTEM "http://www.brics.dk/ixwt/recipes.dtd"><collection>...</collection>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN” "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE collection [ ... ]>
![Page 27: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/27.jpg)
Exercise: Add a doctype &Exercise: Add a doctype &validate your solution atvalidate your solution at
validator.w3.orgvalidator.w3.org
(Still plenty of time)
![Page 28: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/28.jpg)
28An Introduction to XML and Web Technologies
Entity Declarations (1/3)Entity Declarations (1/3)
Internal entity declarations – a simple macro mechanism
Example:• Schema:
<!ENTITY copyrightnotice "Copyright © 2005 Widgets'R'Us.">
• Input:
A gadget has a medium size head and a big gizmo subwidget.©rightnotice;
• Output:
A gadget has a medium size head and a big gizmo subwidget.Copyright © 2005 Widgets'R'Us.
![Page 29: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/29.jpg)
29An Introduction to XML and Web Technologies
Entity Declarations (2/3)Entity Declarations (2/3)
Internal parameter entity declarations – apply to the DTD, not the instance document
Example:• Schema:
<!ENTITY % Shape "(rect|circle|poly|default)">
• <!ATTLIST area shape %Shape; "rect">
corresponds to
<!ATTLIST area shape (rect|circle|poly|default) "rect">
![Page 30: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/30.jpg)
30An Introduction to XML and Web Technologies
Entity Declarations (3/3)Entity Declarations (3/3)
External parsed entity declarations – references to XML data in other filesExample:• <!ENTITY widgets
SYSTEM "http://www.brics.dk/ixwt/widgets.xml">
External unparsed entity declarations – references to non-XML dataExample:• <!ENTITY widget-image
SYSTEM "http://www.brics.dk/ixwt/widget.gif” NDATA gif >
• <!NOTATION gif SYSTEM "http://www.iana.org/assignments/media-types/image/gif">
• <!ATTLIST thing img ENTITY #REQUIRED>
not widely used!
![Page 31: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/31.jpg)
32An Introduction to XML and Web Technologies
Checking Validity with DTDChecking Validity with DTD
A DTD processor (also called a validating XML parser)
parses the input document (includes checking well-formedness)
checks the root element name for each element, checks its contents and
attributes checks uniqueness and referential constraints
(ID/IDREF(S) attributes)
![Page 32: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/32.jpg)
Exercise: what didn’t we check?Exercise: what didn’t we check?
![Page 33: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/33.jpg)
34An Introduction to XML and Web Technologies
RecipeML with DTD (1/2)RecipeML with DTD (1/2)
<!ELEMENT collection (description,recipe*)><!ELEMENT description (#PCDATA)><!ELEMENT recipe
(title,date,ingredient*,preparation,comment?, nutrition,related*)>
<!ATTLIST recipe id ID #IMPLIED><!ELEMENT title (#PCDATA)><!ELEMENT date (#PCDATA)><!ELEMENT ingredient (ingredient*,preparation)?><!ATTLIST ingredient name CDATA #REQUIRED amount CDATA #IMPLIED unit CDATA #IMPLIED>
![Page 34: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/34.jpg)
35An Introduction to XML and Web Technologies
RecipeML with DTD (2/2)RecipeML with DTD (2/2)
<!ELEMENT preparation (step*)><!ELEMENT step (#PCDATA)><!ELEMENT comment (#PCDATA)><!ELEMENT nutrition EMPTY><!ATTLIST nutrition calories CDATA #REQUIRED carbohydrates CDATA #REQUIRED fat CDATA #REQUIRED protein CDATA #REQUIRED alcohol CDATA #IMPLIED><!ELEMENT related EMPTY><!ATTLIST related ref IDREF #REQUIRED>
![Page 35: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/35.jpg)
36An Introduction to XML and Web Technologies
Problems with the DTD descriptionProblems with the DTD description
calories should contain a non-negative number protein should contain a value on the form N% where
N is between 0 and 100; comment should be allowed to appear anywhere in the
contents of recipe unit should only be allowed in an elements where
amount is also present nested ingredient elements should only be allowed
when amount is absent
– our DTD schema permits in some cases too much and in other cases too little!
![Page 36: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/36.jpg)
Ritter Sport Winners:Ritter Sport Winners:Morten & PerMorten & Per
Note: The Ritter Sport exercises should be within reach of everyone.
(Even if maybe they weren’t so far.)
![Page 37: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/37.jpg)
XML SchemaXML Schema
(Complex and insufficient)
![Page 38: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/38.jpg)
40An Introduction to XML and Web Technologies
Requirements for XML SchemaRequirements for XML Schema
- W3C’s proposal for replacing DTD
Design principles: More expressive than DTD Use XML notation Self-describing Simplicity
Technical requirements: Namespace support User-defined datatypes Inheritance (OO-like) Evolution Embedded documentation ...
![Page 39: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/39.jpg)
41An Introduction to XML and Web Technologies
Example (1/3)Example (1/3)
<b:card xmlns:b="http://businesscard.org"> <b:name>John Doe</b:name> <b:title>CEO, Widget Inc.</b:title> <b:email>[email protected]</b:email> <b:phone>(202) 555-1414</b:phone> <b:logo b:uri="widget.gif"/></b:card>
Instance document:
![Page 40: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/40.jpg)
42An Introduction to XML and Web Technologies
Example (2/3)Example (2/3)
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:b="http://businesscard.org" targetNamespace="http://businesscard.org">
<element name="card" type="b:card_type"/> <element name="name" type="string"/> <element name="title" type="string"/> <element name="email" type="string"/> <element name="phone" type="string"/> <element name="logo" type="b:logo_type"/> <attribute name="uri" type="anyURI"/>
Schema:
![Page 41: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/41.jpg)
43An Introduction to XML and Web Technologies
Example (3/3)Example (3/3)
<complexType name="card_type"> <sequence> <element ref="b:name"/> <element ref="b:title"/> <element ref="b:email"/> <element ref="b:phone" minOccurs="0"/> <element ref="b:logo" minOccurs="0"/> </sequence> </complexType>
<complexType name="logo_type"> <attribute ref=“b:uri" use="required"/> </complexType></schema>
![Page 42: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/42.jpg)
44An Introduction to XML and Web Technologies
Connecting Schemas and InstancesConnecting Schemas and Instances
<b:card xmlns:b="http://businesscard.org“ xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://businesscard.org business_card.xsd"> <b:name>John Doe</b:name> <b:title>CEO, Widget Inc.</b:title> <b:email>[email protected]</b:email> <b:phone>(202) 555-1414</b:phone> <b:logo b:uri="widget.gif"/></b:card>
![Page 43: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/43.jpg)
45An Introduction to XML and Web Technologies
Types and DeclarationsTypes and Declarations
Simple type definition:defines a family of Unicode text strings
Complex type definition: defines a content and attribute model
Element declaration: associates an element name with a simple or complex type
Attribute declaration: associates an attribute name with a simple type
![Page 44: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/44.jpg)
ELEMENT DECLARATIONSELEMENT DECLARATIONSATTRIBUTE DECLARATIONSATTRIBUTE DECLARATIONS
46An Introduction to XML and Web Technologies
![Page 45: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/45.jpg)
47An Introduction to XML and Web Technologies
Element and Attribute DeclarationsElement and Attribute Declarations
Examples:
• <element name="serialnumber" type="nonNegativeInteger"/>
• <attribute name=”alcohol" type=”r:percentage"/>
![Page 46: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/46.jpg)
SIMPLE TYPE DEFINITIONSSIMPLE TYPE DEFINITIONS
48An Introduction to XML and Web Technologies
![Page 47: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/47.jpg)
49An Introduction to XML and Web Technologies
Simple Types (Datatypes) – PrimitiveSimple Types (Datatypes) – Primitive
string any Unicode string
boolean true, false, 1, 0decimal 3.1415float 6.02214199E23double 42E970dateTime 2004-09-26T16:29:00-
05:00time 16:29:00-05:00date 2004-09-26hexBinary 48656c6c6f0abase64Binary SGVsbG8KanyURI http://www.brics.dk/ixwt/QName rcp:recipe, recipe...
![Page 48: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/48.jpg)
Exercise: Exercise: write an attribute declaration for the write an attribute declaration for the
“name” attribute of <club>. “name” attribute of <club>.
<club no=“4” type=“iron” name=“Range Pro 1999”>
(Hint, “<attribute name=? type=? />”)
![Page 49: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/49.jpg)
51An Introduction to XML and Web Technologies
ExamplesExamples
<simpleType name="score_from_0_to_100"> <restriction base="integer"> <minInclusive value="0"/> <maxInclusive value="100"/> </restriction></simpleType>
<simpleType name="percentage"> <restriction base="string"> <pattern value="([0-9]|[1-9][0-9]|100)%"/> </restriction></simpleType> regular expression
![Page 50: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/50.jpg)
Exercise: Exercise: write an attribute declaration for the write an attribute declaration for the
“no” attribute of <club>. “no” attribute of <club>.
<club no=“4” type=“iron” name=“Range Pro 1999”>
(Hint, “<attribute name=? type=’clubno’ />””<simpleType name=’clubno’> ...”)
![Page 51: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/51.jpg)
53An Introduction to XML and Web Technologies
Derivation of Simple Types – RestrictionDerivation of Simple Types – Restriction
Constraining facets:
• length• minLength• maxLength
• pattern• enumeration• whiteSpace
• maxInclusive• maxExclusive• minInclusive• minExclusive
• totalDigits• fractionDigits
![Page 52: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/52.jpg)
Simple Type Derivation – EnumerationSimple Type Derivation – Enumeration
<simpleType name=“country”>
<restriction base=“string”>
<enumeration value=“DA”/>
<enumeration value=“UK”/>
<enumeration value=“DE”/>
</restriction>
</simpleType>
54An Introduction to XML and Web Technologies
![Page 53: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/53.jpg)
Exercise: Exercise: write an attribute declaration for the write an attribute declaration for the
“type” attribute of <club>. “type” attribute of <club>. (Values: iron, wood, putter)(Values: iron, wood, putter)
<club no=“4” type=“iron” name=“Range Pro 1999”>
(Hint, “<attribute name=? type=’clubtype’ />””<simpleType name=’clubtype’> ...”)
![Page 54: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/54.jpg)
56An Introduction to XML and Web Technologies
Simple Type Derivation – UnionSimple Type Derivation – Union
<simpleType name="boolean_or_decimal"> <union> <simpleType> <restriction base="boolean"/> </simpleType> <simpleType> <restriction base="decimal"/> </simpleType> </union></simpleType>
![Page 55: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/55.jpg)
57An Introduction to XML and Web Technologies
Built-In Derived Simple TypesBuilt-In Derived Simple Types
• normalizedString• token• language• Name• NCName• ID• IDREF• integer
• nonNegativeInteger• unsignedLong• long• int• short• byte• ...
![Page 56: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/56.jpg)
COMPLEX TYPE DEFINITIONSCOMPLEX TYPE DEFINITIONS
58An Introduction to XML and Web Technologies
![Page 57: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/57.jpg)
59An Introduction to XML and Web Technologies
ExampleExample
<element name="order" type="n:order_type"/>
<complexType name="order_type" mixed="true"> <choice> <element ref="n:address"/> <sequence> <element ref="n:email"
minOccurs="0" maxOccurs="unbounded"/> <element ref="n:phone"/> </sequence> </choice> <attribute ref=”n:id" use="required"/></complexType>
![Page 58: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/58.jpg)
Exercise: Exercise: write an element declaration for <club>write an element declaration for <club>
<club no=“4” type=“iron” name=“Range Pro 1999”>
(“<element name=? type=’clubelem’ />” and”<complexType name=’clubelem’> <attribute ...”</complexType>)
![Page 59: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/59.jpg)
61An Introduction to XML and Web Technologies
Complex Types with Complex ContentsComplex Types with Complex Contents
Content models as regular expressions:
• Element reference <element ref=”name”/>• Concatenation <sequence> ... </sequence>• Union <choice> ... </choice>• All <all> ... </all>• Element wildcard: <any namespace=”...”
processContents=”...”/> Attribute reference: <attribute ref=”...”/> Attribute wildcard: <anyAttribute namespace=”...”
processContents=”...”/>
Cardinalities: minOccurs, maxOccurs, useMixed content: mixed=”true”
![Page 60: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/60.jpg)
Exercise:Exercise:Write an element declaration for Write an element declaration for
<clubs><clubs>
<clubs>
<club no="4" type="iron" name="Range Pro 1999"/>
<club no="p" type="putter"
name="Extreme Precision Pro 1998"/>
</clubs>
![Page 61: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/61.jpg)
Extended Example:Extended Example:Business CardsBusiness Cards
(click)
![Page 62: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/62.jpg)
Thank you for listeningThank you for listening
Next week:
Beyond the Basics of XML Schema
![Page 63: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/63.jpg)
65An Introduction to XML and Web Technologies
Complex Types with Simple ContentComplex Types with Simple Content
<complexType name="category"> <simpleContent> <extension base="integer"> <attribute ref=”r:class”/> </extension> </simpleContent></complexType>
<complexType name="extended_category"> <simpleContent> <extension base="n:category"> <attribute ref=”r:kind"/> </extension> </simpleContent></complexType>
<complexType name="restricted_category"> <simpleContent> <restriction base="n:category"> <totalDigits value="3"/> <attribute ref=“r:class" use="required"/> </restriction> </simpleContent></complexType>
![Page 64: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/64.jpg)
66An Introduction to XML and Web Technologies
Derivation with Complex ContentDerivation with Complex Content
<complexType name="basic_card_type"> <sequence> <element ref="b:name"/> </sequence></complexType>
<complexType name="extended_type"> <complexContent> <extension base= "b:basic_card_type"> <sequence> <element ref="b:title"/> <element ref="b:email" minOccurs="0"/> </sequence> </extension> </complexContent></complexType>
<complexType name="further_derived"> <complexContent> <restriction base= "b:extended_type"> <sequence> <element ref="b:name"/> <element ref="b:title"/> <element ref="b:email"/> </sequence> </restriction> </complexContent></complexType>
Note: restriction is not the opposite of extension!
![Page 65: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/65.jpg)
67An Introduction to XML and Web Technologies
Global vs. Local DescriptionsGlobal vs. Local Descriptions
Global (toplevel) style:
<element name="card“ type="b:card_type"/> <element name="name“ type="string"/>
<complexType name="card_type"> <sequence> <element ref="b:name"/> ... </sequence> </complexType>
Local (inlined) style:
<element name="card"> <complexType> <sequence> <element name="name" type="string"/> ... </sequence> </complexType> </element>
inlined
![Page 66: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/66.jpg)
68An Introduction to XML and Web Technologies
Global vs. Local DescriptionsGlobal vs. Local Descriptions
Local type definitions are anonymous
Local element/attribute declarations can be overloaded – a simple form of context sensitivity (particularly useful for attributes!)
Only globally declared elements can be starting points for validation (e.g. roots)
Local definitions permit an alternative namespace semantics (explained later...)
![Page 67: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/67.jpg)
69An Introduction to XML and Web Technologies
Requirements to Complex TypesRequirements to Complex Types
Two element declarations that have the same name and appear in the same complex type must have identical types
<complexType name=”some_type"> <choice> <element name=”foo" type=”string"/> <element name=”foo" type=”integer"/> </choice></complexType>
• This requirement makes efficient implementation easier
all can only contain element (e.g. not sequence!)• so we cannot use all to solve the problem with comment in RecipeML
...
![Page 68: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/68.jpg)
70An Introduction to XML and Web Technologies
NamespacesNamespaces
<schema targetNamespace="...” ...>
Prefixes are also used in certain attribute values!
Unqualified Locals: • if enabled, the name of a locally declared element
or attribute in the instance document must have no namespace prefix (i.e. the empty namespace URI)
• such an attribute or element “belongs to” the element declared in the surrounding global definition
• always change the default behavior usingelementFormDefault="qualified"
![Page 69: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/69.jpg)
73An Introduction to XML and Web Technologies
Uniqueness, Keys, ReferencesUniqueness, Keys, References
<element name="w:widget" xmlns:w="http://www.widget.org"> <complexType> ... </complexType> <key name="my_widget_key"> <selector xpath="w:components/w:part"/> <field xpath="@manufacturer"/> <field xpath="w:info/@productid"/> </key> <keyref name="annotation_references" refer="w:my_widget_key"> <selector xpath=".//w:annotation"/> <field xpath="@manu"/> <field xpath="@prod"/> </keyref></element>
unique: as key, but fields may be absent
in every widget, each part must have unique (manufacturer, productid)
in every widget, for each annotation,(manu, prod) must match a my_widget_key
only a “downward” subset of XPath is used
![Page 70: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/70.jpg)
74An Introduction to XML and Web Technologies
Other Features in XML SchemaOther Features in XML Schema
Groups Nil values Annotations Defaults and whitespace Modularization
– read the book chapter
![Page 71: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/71.jpg)
75An Introduction to XML and Web Technologies
RecipeML with XML Schema (1/5)RecipeML with XML Schema (1/5)
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:r="http://www.brics.dk/ixwt/recipes" targetNamespace="http://www.brics.dk/ixwt/recipes" elementFormDefault="qualified">
<element name="collection"> <complexType> <sequence> <element name="description" type="string"/> <element ref="r:recipe" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <unique name="recipe-id-uniqueness"> <selector xpath=".//r:recipe"/> <field xpath="@id"/> </unique> <keyref name="recipe-references" refer="r:recipe-id-uniqueness"> <selector xpath=".//r:related"/> <field xpath="@ref"/> </keyref> </element>
![Page 72: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/72.jpg)
76An Introduction to XML and Web Technologies
RecipeML with XML Schema (2/5)RecipeML with XML Schema (2/5)
<element name="recipe"> <complexType> <sequence> <element name="title" type="string"/> <element name="date" type="string"/> <element ref="r:ingredient" minOccurs="0" maxOccurs="unbounded"/> <element ref="r:preparation"/> <element name="comment" type="string" minOccurs="0"/> <element ref="r:nutrition"/> <element ref="r:related" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="id" type="NMTOKEN"/> </complexType> </element>
![Page 73: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/73.jpg)
77An Introduction to XML and Web Technologies
RecipeML with XML Schema (3/5)RecipeML with XML Schema (3/5)
<element name="ingredient"> <complexType> <sequence minOccurs="0"> <element ref="r:ingredient" minOccurs="0" maxOccurs="unbounded"/> <element ref="r:preparation"/> </sequence> <attribute name="name" use="required"/> <attribute name="amount" use="optional"> <simpleType> <union> <simpleType> <restriction base="r:nonNegativeDecimal"/> </simpleType> <simpleType> <restriction base="string"> <enumeration value="*"/> </restriction> </simpleType> </union> </simpleType> </attribute> <attribute name="unit" use="optional"/> </complexType> </element>
![Page 74: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/74.jpg)
78An Introduction to XML and Web Technologies
RecipeML with XML Schema (4/5)RecipeML with XML Schema (4/5)
<element name="preparation"> <complexType> <sequence> <element name="step" type="string“ minOccurs="0“
maxOccurs="unbounded"/> </sequence> </complexType> </element>
<element name="nutrition"> <complexType> <attribute name="calories" type="r:nonNegativeDecimal“ use="required"/> <attribute name="protein" type="r:percentage" use="required"/> <attribute name="carbohydrates" type="r:percentage" use="required"/> <attribute name="fat" type="r:percentage" use="required"/> <attribute name="alcohol" type="r:percentage" use="optional"/> </complexType> </element>
<element name="related"> <complexType> <attribute name="ref" type="NMTOKEN" use="required"/> </complexType> </element>
![Page 75: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/75.jpg)
79An Introduction to XML and Web Technologies
RecipeML with XML Schema (5/5)RecipeML with XML Schema (5/5)
<simpleType name="nonNegativeDecimal"> <restriction base="decimal"> <minInclusive value="0"/> </restriction> </simpleType>
<simpleType name="percentage"> <restriction base="string"> <pattern value="([0-9]|[1-9][0-9]|100)%"/> </restriction> </simpleType>
</schema>
![Page 76: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/76.jpg)
80An Introduction to XML and Web Technologies
Problems with the XML Schema descriptionProblems with the XML Schema description
calories should contain a non-negative number protein should contain a value on the form N% where N
is between 0 and 100; comment should be allowed to appear
anywhere in the contents of recipe unit should only be allowed in an elements
where amount is also present nested ingredient elements should only be
allowed when amount is absent
– even XML Schema has insufficient expressiveness!
solved
![Page 77: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/77.jpg)
82An Introduction to XML and Web Technologies
Strengths of XML SchemaStrengths of XML Schema
Namespace support
Data types (built-in and derivation)
Modularization
Type derivation mechanism
![Page 78: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/78.jpg)
95An Introduction to XML and Web Technologies
SummarySummary
schema: formal description of the syntax of an XML language
DTD: simple schema language• elements, attributes, entities, ...
XML Schema: more advanced schema language• element/attribute declarations• simple types, complex types, type derivations• global vs. local descriptions• ...
![Page 79: An Introduction to XML and Web Technologies Schema Languages Anders Møller & Michael I. Schwartzbach 2006 Addison-Wesley.](https://reader031.fdocuments.net/reader031/viewer/2022032803/56649e305503460f94b20f3e/html5/thumbnails/79.jpg)
96An Introduction to XML and Web Technologies
Essential Online ResourcesEssential Online Resources
http://www.w3.org/TR/xml11/ http://www.w3.org/TR/xmlschema-1/ http://www.w3.org/TR/xmlschema-2/