1 tutorial 14 validating documents with schemas exploring the xml schema vocabulary

49
1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Upload: bruno-parsons

Post on 05-Jan-2016

226 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

1

Tutorial 14

Validating Documents with Schemas

Exploring the XML Schema Vocabulary

Page 2: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

2

Introducing XML Schemas

• A schema is an XML document that contains validation rules for an XML vocabulary.

• The XML document containing the content is called the instance document.

Page 3: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Comparing Schemas and DTDs

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

3

Page 4: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

4

Schema Vocabularies

• There is no single schema form. Several schema “vocabularies” have been developed in the XML language.

• Support for a particular schema depends on the XML parser being used for validation.

Page 5: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Schema Vocabularies

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

5

Page 6: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

6

Starting a Schema File

• A schema is always placed in a separate XML document that is referenced by the instance document.

• The root element in any XML Schema document is the schema element.

<?xml version=“1.0” ?>

<schema xmlns=“http://www.w3.org/2001/XMLSchema”>

content

<xs: schema>

Page 7: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

7

Understanding Simple and Complex Types

• XML Schema recognize two categories of element types: simple and complex.

• A simple type contains a single value.

• A complex type contains two or more values or elements placed within a defined structure.

Page 8: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Understanding Simple and Complex Types

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

8

Page 9: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Simple and Complex Types in the patients.xml Document

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

9

Page 10: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

10

Defining a Simple Type Element

• Use the following syntax to declare a simple type element in XML Schema:

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

• Here, name is the name of the element in the instance document and type is the data type of the element.

• If a namespace prefix is used with the XML Schema namespace, any XML Schema tags must be qualified with the namespace prefix.

Page 11: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

11

Understanding Data Types

• XML Schema supports two data types: built-in and user-derived.

• A built-in data type is part of the XML Schema specifications and is available to all XML Schema authors.

• A user-derived data type is created by the XML Schema author for specific data values in the instance document.

Page 12: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

12

Defining an Attribute

• An attribute is another example of a simple type. The syntax to define an attribute is

<xs:attribute name="name" type="type“ default="default“ fixed="fixed" />

• Where name is the name of the attribute, type is the data type, default is the attribute’s default value, and fixed is a fixed value for the attribute.

Page 13: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

13

Defining a Complex Type Element

• The basic structure for defining a complex type element with XML Schema is

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

declarations</xs:complexType>

</xs:element>• where name is the name of the element and declarations

are declarations that declare the type of content contained within the element.

Page 14: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

14

Defining a Complex Type Element

• Four complex type elements that usually appear in an instance document are the following:– The element is an empty element and contains only

attributes.– The element contains textual content and attributes

but no child elements.– The element contains child elements but no attributes.– The element contains both child elements and

attributes.

Page 15: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

15

Defining an Element Containing Only Attributes

• The code to declare the attributes of an empty element is<xs:element name="name">

<xs:complexType>attributes

</xs:complexType></xs:element>

where name is the name of the element in the instance document and attributes is the set of simple type elements that define the attributes associated with the element

Page 16: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

16

Defining an Element Containing Attributes and Basic Text

• If an element is not empty and contains textual content (but no child elements), the structure of the complex type element is slightly different.

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

<xs:simpleContent><xs:extension base="type">

attributes</xs:extension>

</xs:simpleContent></xs:complexType>

</xs:element>

Page 17: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

17

Referencing an Element or Attribute Definition

• XML Schema allows for a great deal of flexibility in designing complex types. Rather than nesting the attribute declaration within the element, you can create a reference to it. The code to create a reference to an element or attribute declaration is

<xs:element ref="elemName" />

<xs:attribute ref="attName" />• Where elemName is the name used in an element

declaration and attName is the name used in an attribute declaration

Page 18: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

18

Defining an Element with Nested Children

• Another kind of complex type element contains nested child elements, but no attributes. To define these child elements, use the code structure

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

<xs:compositor>elements

</xs:compositor></xs:complexType>

</xs:element>• where name is the name of the element, compositor

defines how the child elements are organized, and elements is a list of the nested child elements

Page 19: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

19

Defining an Element with Nested Children

• XML Schema supports the following compositors:– sequence defines a specific order for the child

elements– choice allows any one of the child elements to

appear in the instance document– all allows any of the child elements to appear in any

order in the instance document; however, they must appear either only once or not all.

Page 20: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

20

Defining an Element Containing Nested Elements and Attributes

• The code for a complex type element that contains both child elements and attributes is

<xs:element name="name">

<xs:complexType>

<xs:compositor>

elements

</xs:compositor>

attributes

</xs:complexType>

</xs:element>

Page 21: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

21

Specifying Mixed Content

• When the mixed attribute is set to the value “true,” XML Schema assumes that the element contains both text and child elements. The structure of the child elements can then be defined with the conventional method. For example, the XML content

<Summary>Patient <Name>Cynthia Davis</Name> was enrolled inthe <Study>Tamoxifen Study</Study> on 8/15/2003.

</Summary>can be declared in the schema file using the following complex type:

<element name="Summary"><complexType mixed="true">

<sequence><element name="Name" type="string"/><element name="Study" type="string"/>

</sequence></complexType>

</element>

Page 22: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Indicating Required Attributes

• An attribute may or may not be required with a particular element<xs:element name="name">

<xs:complexType>

element content

<xs:attribute properties use="use" />

</xs:complexType>

</xs:element>

• where name is the name of the element containing the attribute, element content is XML Schema code that defines the content and structure of the element, properties is XML Schema code that defines the data type and properties of the attribute, and use has one of the following three values (required, optional, or prohibited)

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

22

Page 23: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Specifying the Number of Child Elements

• To specify the number of times an element appears in the instance document, you can apply the minOccurs and maxOccurs attributes to the element definition

<xs:element name="name" type="type“ minOccurs="value" maxOccurs="value” />

where the minOccurs value defines the minimum times the element can occur and the maxOccurs value defines the maximum number of times the element can occur

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

23

Page 24: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

24

Applying a Schema to an Instance Document

• To attach a schema to the document, you must do the following:– Declare a namespace for XML Schema in the

instance document.– Indicate the location of the schema file.

• To declare the XML Schema namespace in the instance document, you add the following attribute to the document’s root element:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Page 25: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

25

Applying a Schema to an Instance Document

• If there is no namespace for the contents of the instance document, add the following attribute to the root element:

xsi:noNamespaceSchemaLocation="schema"

Page 26: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

26

Validating with Built-in Data Types

• A primitive data type, also called a base type, is one of 19 fundamental data types not defined in terms of other types.

• A derived data type is a data type that is developed from one of these base types.

Page 27: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Validating with Built-in Data Types

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

27

Page 28: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

String Data Types

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

28

Page 29: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Numeric Data Types

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

29

Page 30: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Date and Time Data Types

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

30

Page 31: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

31

Deriving Customized Data Types

• Three components are involved in deriving new data types:– Value space: the set of values that correspond to the

data type.– Lexical space: the set of textual representations of

the value space.– Facets: the properties of the data type that

distinguish one data type from another.

Page 32: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

32

Deriving Customized Data Types

• New data types fall into three categories:– List: a list of values where each list is derived from a

base type.– Union: the combination of two or more data types.– Restriction: a limit placed on the facet of a base

type.

Page 33: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Constraining Facets

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

33

Page 34: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

34

Deriving Data Types Using Regular Expressions

• A regular expression is a text string that defines a character pattern

• To apply a regular expression in a data type, you use the code

<xs:simpleType name="name">

<xs:restriction base="type">

<xs:pattern value="regex"/>

</xs:restriction>

</xs:simpleType>• Where regex is a regular expression pattern.

Page 35: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Regular Expression Quantifiers

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

35

Page 36: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

36

Working with Named Types

• XML Schema also allows schema authors to create customized complex types.

• The advantage of creating a complex type is that the complex structure can be reused in the document.

• For example, the following code declares an element named client containing the complex content of two child elements named firstName and lastName:

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

<xs:sequence><xs:element name="firstName" type="xs:string“ /><xs:element name="lastName" type="xs:string“ />

</xs:sequence></xs:complexType>

</xs:element>

Page 37: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

37

Named Model Groups

• A named model group is a collection, or group, of elements. The syntax for creating a model group is

<xs:group name="name">

elements

</xs:group>

where name is the name of the model group, and elements is a collection of element declarations

Page 38: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

38

Named Attribute Groups

• Attributes can be grouped into collections called named attribute groups.

• This is particularly useful for attributes that you want to use with several different elements in a schema. The syntax for a named attribute group is

<xs:attributeGroup name="name">attributes

</xs:attributeGroup>where name is the name of the attribute group and attributes is a collection of attributes assigned to the group.

Page 39: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Designing a Schema

• One schema design is a Flat Catalog Design. • In this design, all element declarations are made

globally.• The structure of the instance document is created by

referencing the global element declarations.

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

39

Page 40: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

40

Flat Catalog Design

Page 41: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

41

Russian Doll Design

• Schemas can be structured in a number of ways. One structure is called a Russian doll design. This design involves sets of nested declarations.

• While this design makes it easy to associate the schema with the instance document, it can be confusing and difficult to maintain.

Page 42: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

42

Russian Doll Design

Page 43: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

43

Venetian Blind Design

• A Venetian blind design is similar to a flat catalog, except that instead of declaring elements and attributes globally, it creates named types and references those types within a single global element

• In this layout, the only globally declared element is the patients element; all other elements and attributes are placed within element or attribute groups or, in the case of the performance element, within a named complex type

Page 44: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

44

Venetian Blind Design

Page 45: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

Comparison of Schema Designs

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

45

Page 46: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

46

Associating a Schema with a Namespace

• To associate a schema with a namespace, you first declare the namespace and then make that namespace the target of the schema. To do this, you add the following attributes to the schema’s root element:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns="prefix:uri"targetNamespace="uri">

...</xs:schema>

where prefix is the prefix of the namespace and uri is the URI of the namespace

Page 47: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

47

Validating a Combined Document

Page 48: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

48

Including and Importing Schemas

• To include a schema from the same namespace, add the following element as a child of the schema element:

<xs:include schemaLocation="schema" />• Where schema is the name and location of the schema

file.• To import a schema from a different namespace, use the

syntax

<xs:import namespace="uri" schemaLocation="schema" />• Where uri is the URI of the imported schema’s

namespace and schema is the name and location of the schema file.

Page 49: 1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary

New Perspectives on HTML, XHTML, and XML, Comprehensive, 3rd Edition

49

Referencing Objects from Other Schemas

• Once a schema is imported, any objects it contains with global scope can be referenced

• To reference an object from an imported schema, you must declare the namespace of the imported schema in the schema element

• You can then reference the object using the ref attribute or the type attribute for customized simple and complex types