xsd: xml schema language kanda runapongsa ([email protected])[email protected] dept. of computer...

48
XSD: XML Schema Language Kanda Runapongsa ([email protected] ) Dept. of Computer Engineering Khon Kaen University

Upload: marian-maxwell

Post on 18-Jan-2016

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

XSD: XML Schema Language

Kanda Runapongsa ([email protected])

Dept. of Computer EngineeringKhon Kaen University

Page 2: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

2

XML Schema & DTD Like a DTD, its purpose is to

define the legal building blocks of an XML document defines elements that can appear

in a document defines attributes that can appear

in a document defines which elements are child

elements

Page 3: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

3

XML Schema & DTD (Cont.)

defines the order of child elements defines the number of child

elements defines whether an element is

empty or can include text defines data types for elements and

attributes defines default and fixed values for

elements and attributes

Page 4: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

4

Advantages of XSD over DTD

XML Schemas use XML syntax Do not need to learn a new syntax Use any XML parser to parse XML

schemas XML Schemas support many data

types and allow you to create new data types No ‘Integer’ or ‘Double’ types in DTD

Page 5: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

5

Adv. of XSD over DTD (Cont.)

XML Schemas allow you to group elements to control the recurrence of elements and attributes In DTD, we cannot specify that the

number of occurrences of elements must be at least 2 and at most 5

XML Schemas support namespaces

Page 6: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

6

The <schema> Element The <schema> element is the root

element of every XML Schema:<?xml version="1.0"?><xs:schema>

... ...</xs:schema>

Page 7: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

7

The <schema> Element (Cont.)

<?xml version="1.0"?><xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://abc.com" xmlns=“http://abc.com" elementFormDefault="qualified">... ...

</xs:schema>

Page 8: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

8

Attributes of <Schema>

xmlns:xs=“http://www.w3.org/2001/XMLSchema”

Indicates that the elements and data types used in the schema (schema, element,…) come from the http://www.w3.org/2001/XMLSchema namespace

These elements and data types should be prefixed with xs:

Page 9: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

9

Attributes of <Schema> (Cont.)

targetNamespace=“http://abc.com”

Indicates that the elements defined by this schema (Note, To, From,..) is in the "http://www.w3schools.com" namespace

Page 10: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

10

Attributes of <Schema> (Cont.)

xmlns=“http://abc.com” Indicates that the default

namespace is http://abc.comelementFormDefault="qualified“ indicates that any elements used

by the XML instance document which were declared in this schema must be namespace qualified.

Page 11: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

11

XSD Simple Elements A simple element

Can contain only text Cannot contain any other elements Cannot contain any attributes

Can text be any other types besides string? It can be date, etc., or even a custom

type that you can define yourself

Page 12: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

12

Defining a Simple Element

The syntax for defining a simple element is:

<xs:element name="xxx" type="yyy"/>

where xxx is the name of the element and yyy is the data type of the element.

Page 13: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

13

Simple Elements: Example

Some XML elements <lastname>Wasee</lastname> <age>34</age>

Corresponding element definitions <xs:element name=“lastname”

type=“xs:string”/> <xs:element name=“age”

type=“xs:integer”/>

Page 14: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

14

Built-in Data Types xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

Page 15: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

15

Simple Elements: Default Values

Simple elements can have a default value

A default value is automatically assigned to the element when no value is specified

<xs:element name=“To” type=“xs:string” default=“students”/>

Page 16: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

16

Simple Elements: Fixed Values

A fixed value is automatically assigned to elements

We cannot specify another value<xs:element name=“To”

type=“xs:string” fixed=“students”/>

Page 17: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

17

XSD Attributes All attributes are declared as

simple types Only complex elements can have

attributes An element with attributes

always has a complex type definition

Page 18: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

18

Defining an Attribute Syntax:<xs:attribute name=“xxx” type=“yyy”/>Where xxx is the name of the attribute

and yyy is the data type of the attribute Examples:XML:<lname lang=“EN”>Dee</name>XSD:<xs:attribute name=“lang”

type=“xs:string”/>

Page 19: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

19

Default & Fixed Values for Attributes

Attributes can have a default value or a fixed value specified

Examples: <xs:attribute name=“lang” type=“xs:string” default=“EN”/>

<xs:attribute name=“lang” type=“xs:string” fixed=“EN”/>

Page 20: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

20

Optional & Required Attributes

All attributes are optional by default To explicitly specify that the

attribute is optional or required, use the “use” attribute

Examples: <xs:attribute name=“lang”

type=“xs:string” use=“optional”/> <xs:attribute name=“lang”

type=“xs:string” use=“required”/>

Page 21: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

21

Restrictions on Content When an XML element or attribute

has a type defined, it puts a restriction for the element’s or attribute’s content

We can also add our own restrictions to our XML elements and attributes

These restrictions are called facets

Page 22: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

22

XSD Restrictions/Facets Restrictions are used to control

acceptable values for XML elements or attributes

Many kinds of restrictions/facets Restrictions on values Restrictions on white spaces Restrictions on length

Page 23: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

23

Restrictions on Values This example defines an element called

“age” with a restriction. <xs:element name=“age”>

<xs:simpleType><xs:restriction base=“xs:integer”>

<xs:minInclusive value=“0”/> <xs:maxInclusive value=“60”/>

…</xs:element> What range the value of age is in?

Cannot be lower than 0 or greater than 60

Page 24: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

24

Restriction on a Set of Values

To limit the content of an XML element to a set of acceptable values, we would use the enumeration constraint

<xs:element name=“grade”><xs:simpleType>

<xs:restriction base=“xs:string”><xs:enumeration value=“A”/><xs:enumeration value=“B”/>

…</xs:element>

Page 25: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

25

Restrictions on a Series of Values

To limit the content to a series of numbers or letters, use the pattern constraint

<xs:element name=“letter”><xs:simpleType>

<xs:restriction base=“xs:string”><xs:pattern value=“[a-z]”/>

…</xs:element> What are the acceptable values of the “letter”

element?

Page 26: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

26

Restrictions on a Series of Values

<xs:element name="letter"><xs:simpleType>

<xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])

+"/> …</xs:element> What are the acceptable values of the

“letter” element?

Page 27: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

27

Restrictions on a Series of Values

<xs:element name="password“><xs:simpleType>

<xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]

{8}"/> …

<xs:element> What are the acceptable values of

the “password” element?

Page 28: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

28

Restrictions on White Space Characters

To specify how white space characters should be handled, use the whiteSpace constraint

<xs:element name="address"><xs:simpleType>

<xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/>

…</xs:element The XML processor will not remove any

white space characters

Page 29: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

29

Restrictions on White Space Characters

Three values of whiteSpace preserve: the XML processor will not

remove any white space characters replace: the XML processor will replace

all white space characters with spaces collapse: the XML processor will

remove all white space characters (leading and trailing spaces are removed)

Page 30: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

30

Restrictions on Length<xs:element name="password">

<xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/>…

</xs:element> Can we specify the minimum and

maximum length of the value? Yes, use “minLength” and “maxLength”

Page 31: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

31

What is a Complex Element?

A complex element is an XML element that contains other elements and/or attributes

Four kinds of complex elements Empty elements Elements that contain only other

elements Elements that contain only text Elements that contain both other

elements and text

Page 32: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

32

Complex Elements Ex1: <product pid=“1345”/> Ex2:

<a><b>1</b><c>2</c></a> Ex3: <food type=“dessert”>Ice

cream</food> Ex4: <description>Today is

<date>11.13.2003</date></description>

Page 33: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

33

Defining a Complex Element

<xs:element name=“employee”><xs:complexType>

<xs:sequence><xs:element

name=“firstname” type=“xs:string”/><xs:element

name=“lastname” type=“xs:string”/>…</xs:element>

Page 34: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

34

Sharing the Element Type

<xs:element name=“employee” type=“personinfo”/>

<xs:element name=“student” type=“personinfo”/>

<xs:complexType name=“personinfo”><xs:sequence>

<xs:element name=“firstname” …

</xs:element>

Page 35: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

35

Defining Based on Other Types

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo"> …</xs:complexType>

<xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> …

</xs:complexType>

Page 36: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

36

Types for Empty Elements XML: <product prodid="1345" /> XSD:<xs:element name="product"

type="prodtype"/><xs:complexType

name="prodtype"> <xs:attribute name="prodid" type="xs:positiveInteger"/>

</xs:complexType>

Page 37: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

37

Elements w/ Only Sub-Elements

XML:<p><fn>A</fn><ln>B</ln></p> XSD: <xs:element name="p" type="persontype"/><xs:complexType name="persontype">

<xs:sequence> <xs:element name="fn"

type="xs:string"/> <xs:element name="ln"

type="xs:string"/> </xs:sequence>

</xs:complexType>

Page 38: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

38

Elements w/ Only Text XML: <shoesize>8</shoesize> XSD:<xs:element name="shoesize"

type="shoetype"/><xs:complexType name="shoetype"> <xs:simpleContent>

<xs:extension base="xs:integer">

… </xs:complexType>

Page 39: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

39

Types w/ Mixed Content XML: <letter>Today is

<date>11.13.2003</date></letter> XSD:<xs:element name="letter"><xs:complexType mixed="true">

<xs:sequence> <xs:element name="shipdate" type="xs:date"/>

…</xs:element>

Page 40: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

40

Indicators Order indicators:

All, choice, sequence Occurrence indicators:

maxOccurs, minOccurs Group indicators:

Group name attributeGroup name

Page 41: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

41

All Indicator Specify by default that the child elements

can appear in any order and each child element must occur once and only once

<xs:element name=“person”><xs:complexType>

<xs:all><xs:element name=“fname”type=“xs:string”/>

…</xs:element>

Page 42: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

42

Choice Indicator Specify that either one child element or

another can occur<xs:element name="person">

<xs:complexType> <xs:choice>

<xs:element name="employee" type="employee"/>

<xs:element name="member" type="member"/>

...</xs:element>

Page 43: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

43

Sequence Indicator Specify that the child elements must appear

in a specific order<xs:element name="paper">

<xs:complexType> <xs:sequence>

<xs:element name=“abstract" type="xs:string"/>

<xs:element name=“introduction" type="xs:string"/>

…</xs:element>

Page 44: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

44

Occurrence Indicator Define how often an element can occur maxOccurs Indicator: maximum

number of times an element can occur<xs:element name="person">

<xs:complexType> <xs:sequence>

<xs:element name="full_name" type="xs:string"/>

<xs:element name="child_name" type="xs:string" maxOccurs="10"/>

…</xs:element>

Page 45: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

45

Occurrence Indicator (Cont.)

minOccurs Indicator: minimum number of times an element can occur

<xs:element name="person"> <xs:complexType>

<xs:sequence> <xs:element name="full_name"

type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10“ minOccurs=“0”/>

…</xs:element>

Page 46: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

46

Group Indicators Define related sets of elements Element Groups are defined with the

group declaration, like this:<xs:group name=“groupname”>…</xs:group> After defining a group, we can

reference it in another complex type definition

Page 47: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

47

Element Groups<xs:group name="persongroup">

<xs:sequence> <xs:element name="firstname"

type="xs:string"/> …

</xs:group><xs:complexType name="personinfo">

<xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country"

type="xs:string"/>…

Page 48: XSD: XML Schema Language Kanda Runapongsa (krunapon@kku.ac.th)krunapon@kku.ac.th Dept. of Computer Engineering Khon Kaen University

168493: XML and Web Services (II/2546)

48

Attribute Groups<xs:attributeGroup

name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/>…

</xs:attributeGroup><xs:element name="person">

<xs:complexType> <xs:attributeGroup

ref="personattrgroup"/> …

</xs:element>