Módulo II
Introdução a XMLSchema
Prof. Ismael H F Santos
April 05
Prof. Ismael H. F. Santos - [email protected]
1
Ementa
 Modulo II – XML Schema



April 05
Revisão de XML - Extensible Markup Language
XML Validação
 DTD
 XMLSchema
 DTD x XMLSchema
XML Processing - XSLT
Prof. Ismael H. F. Santos - [email protected]
2
Bibliografia

Linguagem de Programação JAVA

April 05
Ismael H. F. Santos, Apostila UniverCidade, 2002
Prof. Ismael H. F. Santos - [email protected]
3
Livros
 Core Java 2, Cay S. Horstmann, Gary Cornell
Volume 1 (Fundamentos)
 Volume 2 (Características Avançadas)
 Java: Como Programar, Deitel & Deitel
 Thinking in Patterns with JAVA, Bruce Eckel
 Gratuito. http://www.mindview.net/Books/TIJ/

April 05
Prof. Ismael H. F. Santos - [email protected]
4
SOA
April 05
Revisão
XML
Prof. Ismael H. F. Santos - [email protected]
5
What is XML
 XML stands for extensible markup language
 It is a hierarchical data description language
 It is a sub set of SGML a general document
markup language designed for the American
millitary.
 It is defined by w3c.
April 05
Prof. Ismael H. F. Santos - [email protected]
6
XML – Extensible Markup Language
 XML é um documento de Texto
 Dois tipos de elementos
Marcação – Guarda a estrutura do documento
 Dados – Informação propriamente dita
 Uma maneira de representar informação
 não é uma linguagem específica
 não define vocabulário de comandos
 não define uma gramática, apenas regras mínimas
 Exemplo:

April 05
Prof. Ismael H. F. Santos - [email protected]
7
Anatomia de um documento XML
April 05
Prof. Ismael H. F. Santos - [email protected]
8
How does XML differ from HTML?
 HTML is a presentation markup language –
provides no information about content.
 There is only one standard definition of all of the
tags used in HTML.
 XML can define both presentation style and give
information about content.
 XML relies on custom documents defining the
meaning of tags.
April 05
Prof. Ismael H. F. Santos - [email protected]
9
XML x HTML
 HTML mostra
como
apresentar
 XML mostra
o que
significa
April 05
Prof. Ismael H. F. Santos - [email protected]
10
Por que usar XML para compartilhar dados?
 Porque é um padrão aberto
 Facilidade para converter para formatos proprietários
 Porque é texto
 Fácil de ler, fácil de processar, menos
incompatibilidades
 Porque promove a separação entre estrutura,
conteúdo e apresentação


Facilita geração de dados para visualização dinâmica
Evita repetição de informação / simplifica manutenção
 Porque permitirá semântica na Web
 Elementos HTML não carregam significado, apenas
dicas de formatação: mecanismos de busca ficam
prejudicados
 Solução com XML dependerá de suporte dos clientes
April 05
Prof. Ismael H. F. Santos - [email protected]
11
Componentes de um documento XML
 Árvore XML
 nós,
 raiz,
 galhos e
 folhas
 Prólogo
 Comentários
 Instruções de processamento
 Elementos
 Atributos
 Nós de texto
 Entidades
April 05
Prof. Ismael H. F. Santos - [email protected]
12
Partes de um documento XML
April 05
Prof. Ismael H. F. Santos - [email protected]
13
Árvore XML
April 05
Prof. Ismael H. F. Santos - [email protected]
14
Estrutura XML
April 05
Prof. Ismael H. F. Santos - [email protected]
15
Prólogo XML
April 05
Prof. Ismael H. F. Santos - [email protected]
16
Nó raiz e elementos
April 05
Prof. Ismael H. F. Santos - [email protected]
17
Atributos
April 05
Prof. Ismael H. F. Santos - [email protected]
18
Nós de Texto
April 05
Prof. Ismael H. F. Santos - [email protected]
19
A minimal XML document
value
<?xml version=“1.0” ?>
<document name=“first”>Jim</document>
A tag
An attribute
April 05
Prof. Ismael H. F. Santos - [email protected]
Closing tag
20
Entidades
April 05
Prof. Ismael H. F. Santos - [email protected]
21
Entidades de caracteres
April 05
Prof. Ismael H. F. Santos - [email protected]
22
Elementos e Atributos
April 05
Prof. Ismael H. F. Santos - [email protected]
23
Elementos e Atributos (2)
April 05
Prof. Ismael H. F. Santos - [email protected]
24
Quando usar elementos/atributos
 Questão de design


Elementos geralmente referem-se a coisas que
têm atributos
Atributos geralmente são características
dessas coisas que podem ser descritas com
poucas palavras
 Questão de suporte tecnológico


April 05
Atributos não podem conter subelementos
Atributos são mais fáceis de serem validados
num DTD
Prof. Ismael H. F. Santos - [email protected]
25
Identificadores
 Nomes de atributos e elementos
 Podem conter
 qualquer caractere alfanumérico ou
ideograma
 . (ponto)
 - (hífen)
 _ (sublinhado)
 Não podem começar com
 ponto,
 hífen ou
 número
April 05
Prof. Ismael H. F. Santos - [email protected]
26
Identificadores (2)
April 05
Prof. Ismael H. F. Santos - [email protected]
27
Conteúdo misto
April 05
Prof. Ismael H. F. Santos - [email protected]
28
Seção CDATA (Character DATA)
April 05
Prof. Ismael H. F. Santos - [email protected]
29
Instruções de processamento
April 05
Prof. Ismael H. F. Santos - [email protected]
30
Declaração XML
April 05
Prof. Ismael H. F. Santos - [email protected]
31
Using namespaces in XML
 To fully qualify a namespace in XML write the
namespace:tag name. eg.
<my_namespace:tag> </my_namespace:tag>
 In a globally declared single namespace the
qualifier may be omitted.
 More than one namespace:
<my_namespace:tag> </my_namespace:tag>
<your_namespace:tag> </your_namespace:tag>
can co-exist if correctly qualified.
April 05
Prof. Ismael H. F. Santos - [email protected]
32
Using namespaces in XML
 To fully qualify a namespace in XML write the
namespace:tag name. eg.
<my_namespace:tag> </my_namespace:tag>
 In a globally declared single namespace the
qualifier may be omitted.
 More than one namespace:
<my_namespace:tag> </my_namespace:tag>
<your_namespace:tag> </your_namespace:tag>
can co-exist if correctly qualified.
April 05
Prof. Ismael H. F. Santos - [email protected]
33
XML Namespaces
April 05
Prof. Ismael H. F. Santos - [email protected]
34
XML Namespaces
 Limita o escopo de elementos
Evita conflitos quando duas linguagens se cruzam no
mesmo documento
 Consiste da associação de um identificador a cada
elemento/atributo da linguagem, que pode ser
 herdado através do escopo de uma sub-árvore
 atribuído explicitamente através de um prefixo

April 05
Prof. Ismael H. F. Santos - [email protected]
35
Outro Exemplo
April 05
Prof. Ismael H. F. Santos - [email protected]
36
Exemplo com 3 Namespaces
April 05
Prof. Ismael H. F. Santos - [email protected]
37
Namespace Ilustration
April 05
Prof. Ismael H. F. Santos - [email protected]
38
SOA
April 05
XML
Validação
Prof. Ismael H. F. Santos - [email protected]
39
Problemas do XML
 An XML element name may not mean the same
thing in different XML files
 XML on its own doesn XML on its own doesn’t
specify allowable elements

New elements may be added without breaking
applications applications – but applications won’t
recognize them
 XML on its own doesn’t mandate a structure
 XML on its own doesn’t enforce data types
April 05
Prof. Ismael H. F. Santos - [email protected]
40
Documento XML bem-formado
 Documento bem-formado
 ter um único elemento raiz
 etiquetas iniciais e finais combinam (levando em conta
que caracteres maiúsculos e minúsculos são diferentes)
 elementos bem aninhados
 valores de atributos entre aspas ou apóstrofes
 atributos não repetidos
 identificadores válidos para elementos e atributos
 comentários não devem aparecer dentro das etiquetas
 sinais < ou & nunca devem ocorrer dentro dos valores
dos atributos ou nos nós de texto do documento.
April 05
Prof. Ismael H. F. Santos - [email protected]
41
XML Solution – Schemas
 An XML Schema defines the legal building
blocks of an XML document. It mandates: of an
XML document. It mandates:






April 05
elements that can appear in a document
attributes that can be used for a given element
which elements are parent elements and which
elements are parent elements and which
elements are child elements
the order of child elements
data types for elements and attributes
allowable values for elements and attributes
Prof. Ismael H. F. Santos - [email protected]
42
Por que validar ?
April 05
Prof. Ismael H. F. Santos - [email protected]
43
Valid and well formed
 A correct XML document must be both valid and
well formed.
 Well formed means that the syntax must be
correct and all tags must close correctly (eg
<…> </…>).
 Valid means that the document must conform to
some XML definition ( a DTD or Schema).
(Otherwise there can be no definition of what the
tags mean)
April 05
Prof. Ismael H. F. Santos - [email protected]
44
Definindo um Esquema XML
April 05
Prof. Ismael H. F. Santos - [email protected]
45
Classes x Instâncias
April 05
Prof. Ismael H. F. Santos - [email protected]
46
Documentos Válidos
April 05
Prof. Ismael H. F. Santos - [email protected]
47
O que define um Esquema XML
DTD
Documento Válido
April 05
Prof. Ismael H. F. Santos - [email protected]
48
Documentos não-válidos
 Diga porque os documentos são não-válidos ?
Falta
elemento
sobrenome
Elemento
profissão
não pode vir
antes do
elemento
nome
April 05
Prof. Ismael H. F. Santos - [email protected]
49
What is a Schema?
 A schema is the definition of the meaning of
each of the tags within a XML document.
 Analogy: A HTML style sheet can be seen as a
limited schema which only specifies the
presentational style of HTML which refers to it.
 Example: in HTML the tag <strong> pre-
defined. In XML you would need to define this
in the context of your document.
April 05
Prof. Ismael H. F. Santos - [email protected]
50
Namespaces e XML Schema
April 05
Prof. Ismael H. F. Santos - [email protected]
51
XML válido
 Um XML bem construído pode não ser válido em
determinada aplicação
 Aplicação típica pode esperar que



elementos façam parte de um vocabulário limitado,
certos atributos tenham valores e tipos definidos,
elementos sejam organizados de acordo com uma
determinada estrutura hierárquica, etc.
 É preciso especificar a linguagem!
 Esquema: modelo que descreve todos os elementos,
atributos, entidades, suas relações e tipos de dados
 Um documento XML é considerado válido em relação a
um esquema se obedecer todas as suas regras
April 05
Prof. Ismael H. F. Santos - [email protected]
52
Esquemas XML
April 05
Prof. Ismael H. F. Santos - [email protected]
53
DTD vs. XML Schema
April 05
Prof. Ismael H. F. Santos - [email protected]
54
Schema
<?xml version="1.0"?>
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema
xmlns=“document" >
<xs:element name = “DOCUMENT”>
<xs:element name=“CUSTOMER"> </xs:element>
</xs:element>
</xs:schema>
<?xml version=“1.0”?>
<DOCUMENT xmlns=“document”
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Xsi:schemaLocation=“order.xsd”>
<DOCUMENT>
<CUSTOMER>sam smith</CUSTOMER>
<CUSTOMER>sam smith</CUSTOMER>
</DOCUMENT>
April 05
Prof. Ismael H. F. Santos - [email protected]
Simple schema
saved as
order.xsd
XML document
derived from
schema.
55
SOA
XMLSchema
April 05
Prof. Ismael H. F. Santos - [email protected]
56
Namespaces e XML Schema
April 05
Prof. Ismael H. F. Santos - [email protected]
57
Documentos XML bem formados
 Para que possa ser manipulado como uma árvore,
um documento XML precisa ser bem formado

Documentos que não são bem formados não são
documentos XML
 Documentos bem-formados obedecem as regras de
construção de documentos XML genéricos
 Regras incluem





Ter um, e apenas um, elemento raiz
Valores dos atributos estarem entre aspas ou
apóstrofes
Atributos não se repetirem
Todos os elementos terem etiqueta de fechamento
Elementos estarem corretamente aninhados
April 05
Prof. Ismael H. F. Santos - [email protected]
58
XML válido
 Um XML bem construído pode não ser válido em
determinada aplicação
 Aplicação típica pode esperar que



elementos façam parte de um vocabulário limitado,
certos atributos tenham valores e tipos definidos,
elementos sejam organizados de acordo com uma
determinada estrutura hierárquica, etc.
 É preciso especificar a linguagem!
 Esquema: modelo que descreve todos os elementos,
atributos, entidades, suas relações e tipos de dados
 Um documento XML é considerado válido em relação a
um esquema se obedecer todas as suas regras
April 05
Prof. Ismael H. F. Santos - [email protected]
59
Esquemas XML
April 05
Prof. Ismael H. F. Santos - [email protected]
60
Basic XML Schema concepts












Syntax is not the Schema
Namespaces are fundamental
But a schema is not a namespace
Separation of tag from type
Simple and Complex types
Modular Schema construction
Powerful type construction
Local tag-type association
Powerful wildcards
Element equivalence classes
Extension mechanism
Documentation mechanism
April 05
Prof. Ismael H. F. Santos - [email protected]
61
XML Schemas
 What is an XML Schema?
 The purpose of an XML Schema is to define the legal building
blocks of an XML document, just like a DTD.
 An XML Schema:








April 05
defines elements that can appear in a document
defines attributes that can appear in a document
defines which elements are child elements
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
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
62
62
XML Schemas
 XML Schemas are the Successors of DTDs
 XML Schemas will be used in most Web applications as a
replacement for DTDs. Here are some reasons:





April 05
XML Schemas are extensible to future additions
XML Schemas are richer and more powerful than DTDs
XML Schemas are written in XML
XML Schemas support data types
XML Schemas support namespaces
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
63
63
XML Schemas
 XML Schemas Support Data Types
 One of their greatest strengths
 With support for data types:
 It is easier to describe allowable document content
 It is easier to validate the correctness of data
 It is easier to work with data from a database
 It is easier to define data facets (restrictions on data)
 It is easier to define data patterns (data formats)
 It is easier to convert data between different data types
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
64
64
XML Schemas
 XML Schemas use XML Syntax
 Schemas are XML documents
 Benefits of Schemas as XML docs

You don't have to learn a new language
You can use your XML editor to edit your Schema files
You can use your XML parser to parse your Schema files
You can manipulate your Schema with the XML DOM

You can transform your Schema with XSLT



April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
65
65
XML Schemas
 XML Schemas are Extensible
 XML Schemas are extensible, because XML is
extensible

April 05
With an extensible Schema definition you can:
 Reuse your Schema in other Schemas
 Create your own data types derived from the standard
types
 Reference multiple schemas in the same document
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
66
66
XML Schemas
 Well-Formed is not Enough
 A well-formed XML document is a document that conforms to
the XML syntax rules, like:
 it must begin with the XML declaration
 it must have one unique root element
 start-tags must have matching end-tags
 elements are case sensitive
 all elements must be closed
 all elements must be properly nested
 all attribute values must be quoted
 entities must be used for special characters
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
67
67
XML Schemas
 Even if documents are well-formed they can still
contain errors, and those errors can have serious
consequences.
 Think of the following situation: you order 5 gross of
laser printers, instead of 5 laser printers. With XML
Schemas, most of these errors can be caught by your
validating software.
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
68
68
XML Schemas
 Simple XML Document "note.xml":
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
69
69
XML Schemas
 An XML Schema
 The following example is an XML Schema file
called "note.xsd" that defines the elements of
the XML document above ("note.xml"):

April 05
The note element is a complex type because
it contains other elements. The other elements
(to, from, heading, body) are simple types
because they do not contain other elements.
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
70
70
XML Schemas
<?xml version="1.0"?>
<xs:schema xmlns:xs=
targetNamespace=
xmlns=
elementFormDefault=
“http://www.w3.org/2001/XMLSchema”
“http://www.w3schools.com”
“http://www.w3schools.com”
"qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to"
<xs:element name="from"
<xs:element name="heading"
<xs:element name="body"
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
type="xs:string"/>
type="xs:string"/>
type="xs:string"/>
type="xs:string"/>
71
April 05
Prof. Ismael H. F. Santos - [email protected]
71
XML Schemas
 This XML document has a reference to a Schema:
<?xml version="1.0"?>
<note
xmlns= “http://www.w3schools.com”
xmlns:xsi="http://www.w3.org/2001/XMLSchema instance“
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don'tforget me this weekend!</body>
</note>
72
April 05
Prof. Ismael H. F. Santos - [email protected]
72
XML Schemas
 The <schema> Element
 The <schema> element is the root element of every
XML Schema:
<?xml version="1.0"?>
<xs:schema>
...
...
</xs:schema>
73
April 05
Prof. Ismael H. F. Santos - [email protected]
73
XML Schemas
 The <schema> element may contain some attributes.
A schema declaration often looks something like this:
<?xml version="1.0"?>
<xs:schema
xmlns:xs=
targetNamespace=
xmlns=
elementFormDefault=
...
...
</xs:schema>
“http://www.w3.org/2001/XMLSchema”
“http://www.w3schools.com”
“http://www.w3schools.com”
"qualified">
74
April 05
Prof. Ismael H. F. Santos - [email protected]
74
XML Schemas
 The following fragment:
xmlns:xs= “http://www.w3.org/2001/XMLSchema”

Indicates that the elements and data types used in the
schema come from the
“http://www.w3.org/2001/XMLSchema" namespace.

It also specifies that the elements and data types that come
from the “http://www.w3.org/2001/XMLSchema"
namespace should be prefixed with xs:
targetNamespace="http://www.w3schools.com"

Indicates that the elements defined by this schema (note, to,
from, heading, body.) come from the target namespace.
75
April 05
Prof. Ismael H. F. Santos - [email protected]
75
XML Schemas
xmlns=“http://www.w3schools.com”

Indicates the default namespace
elementFormDefault="qualified"

April 05
Indicates that any elements used by the XML instance
document which were declared in this schema must be
namespace qualified.
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
76
76
XML Schemas
 This XML document has a reference to a Schema:
<?xml version="1.0"?>
<note
xmlns= “http://www.w3schools.com”
xmlns:xsi="http://www.w3.org/2001/XMLSchema instance“
xsi:schemaLocation="http://www.w3schools.com
note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don'tforget me this weekend!</body>
</note>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
77
77
XML Schemas
xmlns="http://www.w3schools.com"


Specifies the default namespace declaration.
Tells the schema-validator that all the elements used in this XML
document are declared in this namespace.
 Once the XML Schema Instance namespace is
available:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 Can use the schemaLocation attribute. The first value
is the namespace to use. The second value is the
location of the XML schema to use for that namespace:
xsi:schemaLocation="http://www.w3schools.com note.xsd"
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
78
78
XML Schemas
 Schemas define the elements of your XML files.
 Simple element is an XML element that contains only text. It
cannot contain any other elements or attributes.
 The text can be of many different types. It can be one of the types
included in the XML Schema definition (boolean, string, date, etc.),
or it can be a custom type that you can define yourself.
 You can also add restrictions (facets) to a data type in order to
limit its content, or you can require the data to match a specific
pattern.
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
79
79
XML Schemas
 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.
 XML Schema has a lot of built-in data types. The most common types
are:






April 05
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
80
80
XML Schemas
 Here are some simple XML elements:
<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
 Here are the corresponding simple element
definitions:
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age"
type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
81
81
XML Schemas
 Simple elements may have a default value OR a fixed value
specified.
 Default value is automatically assigned to the element when no
other value is specified. In the following example the default
value is "red":
<xs:element name="color" type="xs:string" default="red"/>
 Fixed value is also automatically assigned to the element, and
you cannot specify another value. In the following example the
fixed value is "red":
<xs:element name="color" type="xs:string" fixed="red"/>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
82
82
XML Schemas
 The syntax for defining an attribute is:
<xs:attribute name="xxx" type="yyy"/>


Where xxx is the name of the attribute and yyy specifies
the data type of the attribute.
Simple elements can’t have attributes!
 Here is an XML element with an attribute:
<lastname lang="EN">Smith</lastname>
 Here is the corresponding attribute definition:
<xs:attribute name="lang" type="xs:string"/>
 Attributes can have default or fixed values. If the
attribute is required, add use=“required”
83
April 05
Prof. Ismael H. F. Santos - [email protected]
83
XML Schemas
 When an XML element or attribute has a data type
defined, it puts restrictions on the element's or
attribute's content.
 If an XML element is of type "xs:date" and contains a
string like "Hello World", the element will not validate.
 With XML Schemas, you can also add your own
restrictions to your XML elements and attributes.
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
84
84
XML Schemas
 The following example defines an element called
"age" with a restriction. The value of age cannot be
lower than 0 or greater than 120:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
85
85
XML Schemas
 The example below defines an element called "car" with a restriction.
The only acceptable values are: Audi, Golf, BMW:
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
 Note: In this case the type "carType" can be used by other elements
because it is not a part of the "car" element.
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
86
86
Schema example
April 05
Prof. Ismael H. F. Santos - [email protected]
87
Schema example (cont´d)
April 05
Prof. Ismael H. F. Santos - [email protected]
88
Using the schema
April 05
Prof. Ismael H. F. Santos - [email protected]
89
Combining Schemas
April 05
Prof. Ismael H. F. Santos - [email protected]
90
Combining Schemas
April 05
Prof. Ismael H. F. Santos - [email protected]
91
Types and Type Derivation
 For purposes of discussion, consider only the
content type aspects of types (attributes are
analogous)
 A content type definition (simple or complex)
consists of a set of constraints on what's
allowed as content.
April 05
Prof. Ismael H. F. Santos - [email protected]
92
Built-In Data Types
April 05
Prof. Ismael H. F. Santos - [email protected]
93
Permissions and obligations
 You can think of the type itself as the set of
strings/EIIs its constraints allow. It's helpful to
think of constraints as composed of obligations
and permissions:
(\d )?(\d{3}-)?\d{3}-\d{4}

regexp definition facet for [US] 'phone number type
 the ? and the \d can be seen as permissions, the
- and the {3} as obligations

April 05
1 337-6818 and 207-422-6240 belong to this type
Prof. Ismael H. F. Santos - [email protected]
94
Simple DataType example
April 05
Prof. Ismael H. F. Santos - [email protected]
95
Datatype Extensions
April 05
Prof. Ismael H. F. Santos - [email protected]
96
Restricting values in na Element
April 05
Prof. Ismael H. F. Santos - [email protected]
97
An integer extension
April 05
Prof. Ismael H. F. Santos - [email protected]
98
Specifying Attributes
April 05
Prof. Ismael H. F. Santos - [email protected]
99
XML Schemas
 What is a Complex Element?
 A complex element is an XML element that
contains other elements and/or attributes.
 There are 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
 Note: Each of these elements may contain
attributes as well!
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
100
100
XML Schemas
 A complex XML element, "food", which contains
only text:
<food tye="dessert">Ice cream</food>
 A complex XML element, "description", which
contains both elements and text:
<description> It happened on
<date lang="norwegian">03.03.99</date> ....
</description>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
101
101
XML Schemas
 A complex XML element, "product", which is empty:
<product pid="1345"/>
 A complex XML element, "employee", which contains
only other elements:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
102
102
XML Schemas
 A complex XML element, "food", which
contains only text:
<food tye="dessert">Ice cream</food>
 A complex XML element, "description", which
contains both elements and text:
<description> It happened on
<date lang="norwegian">03.03.99</date> ....
</description>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
103
103
XML Schemas
 A complex XML element, "description", which
contains both elements and text:
<description> It happened on
<date lang="norwegian">03.03.99</date> ....
</description>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
104
104
Complex types
(title?,forename*,surname)

(shorthand for) content model for name
 the ? can be seen as permission, the , and
the 'surname' as obligations (at the end of
the day, each component involves both
permission AND obligation, but the balance of
impact is as suggested)
April 05
Prof. Ismael H. F. Santos - [email protected]
105
XML Schemas
 A complex XML element, "food", which
contains only text:
<food tye="dessert">Ice cream</food>
 A complex XML element, "description", which
contains both elements and text:
<description> It happened on
<date lang="norwegian">03.03.99</date> ....
</description>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
106
106
XML Schemas
 A complex XML element, "description", which
contains both elements and text:
<description> It happened on
<date lang="norwegian">03.03.99</date> ....
</description>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
107
107
XML Schemas
 How to Define a Complex Element
 Look at this complex XML element, "employee", which
contains only other elements:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
108
108
XML Schemas
2. The "employee" element can have a type attribute
that refers to the name of the complex type to use:
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
109
109
XML Schemas
 If you use the 2nd method, several elements can refer to the
same complex type, like this:
<xs:element name="employee" type="personinfo"/> <xs:element
name="student" type="personinfo"/> <xs:element
name="member" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
April 05
Dr. Ray
LIS 2600
Fall 07
Prof. Ismael H. F. Santos - [email protected]
110
110
Enforcing Structure
April 05
Prof. Ismael H. F. Santos - [email protected]
111
Parent/child example
April 05
Prof. Ismael H. F. Santos - [email protected]
112
Specifying repeating elements
April 05
Prof. Ismael H. F. Santos - [email protected]
113
Complex types, cont'd
(title?,forename*,surname)
<name>
<forename>...</forename>
<surname>...</surname>
</name>

and
<name>
<title>...</title>
<surname>...</surname>
</name>
 are both members of this type
April 05
Prof. Ismael H. F. Santos - [email protected]
114
Restriction
 A type definition may be a restriction of another
type's definition if it reduces permissions,
sometimes to the point of inducing obligations:
\d[01]\d-\d{3}-\d{4}
(a restriction
(\d )?(\d{3}-)?\d{3}-\d{4} of US p#)
 The membership of this type, which includes
 207-422-6240 but not 1 337-6818
 is a (proper) subset of the membership of the
original type,
 because by construction every member of the
new type is a member of the original.
April 05
Prof. Ismael H. F. Santos - [email protected]
115
Restriction, cont'd
 Similarly,
(forename+,surname)
 is a restriction of the original type definition for
name
(title?,forename*,surname)
 and the same relation holds.
April 05
Prof. Ismael H. F. Santos - [email protected]
116
Restriction, cont'd
 Note first that
(forename+,surname)
<name>
<forename>...</forename>
<surname>...</surname>
</name>

is a member of the new type, but
<name>
<title>...</title>
<surname>...</surname>
</name>
 is not.
April 05
Prof. Ismael H. F. Santos - [email protected]
117
Extension
 Now consider
(title?, forename*, surname, genMark?)
 This type extends the original type definition for
name.
<name>
<forename>Al</forename>
<surname>Gore</surname>
<genMark>Jr</genMark>
</name>
 is an instance of this new type, but not of the
original.
April 05
Prof. Ismael H. F. Santos - [email protected]
118
Any
 Finally note that the <any/> content model
particle, in all of its forms, introduces
particularly broad permissions into complex
content types.
April 05
Prof. Ismael H. F. Santos - [email protected]
119
Where are we headed?
 A number of design decisions can now be
stated:
 Should we make it easy to construct type
definitions which restrict or extend other type
definitions, by specifying only the method of
derivation and the differences between the
source and derived type definitions?
 The new proposal says 'yes', you do this by
using the "source" and "derivedBy" attributes
on your <type> or <datatype> element.
April 05
Prof. Ismael H. F. Santos - [email protected]
120
Datatype example
 Consider the simple type case first:
<datatype name='bodytemp'
source='decimal'>
<precision value='4'/>
<scale value='1'/>
<minInclusive value='97.0'/>
<maxInclusive value='105.0'/>
</datatype>
<datatype name='healthyBodytemp'
source='bodytemp'>
<maxInclusive value='99.5'/>
</datatype>
April 05
Prof. Ismael H. F. Santos - [email protected]
121
Derived type
 The healthyBodytemp type definition is
defined by closing down the permitted range of
bodytemp. We say it 'inherits' the other facets
of bodytemp, so the 'effective type definition'
of healthyBodytemp is
April 05
Prof. Ismael H. F. Santos - [email protected]
122
Effective type
<datatype name='healthyBodytemp'
source='decimal'>
<precision value='4'/>
<scale value='1'/>
<minInclusive value='97.0'/>
<maxInclusive value='99.5'/>
</datatype>
 Since it doesn't in general make sense to
extend one simple type by another, the
"derivedBy" attribute is actually redundant
for <datatype>.
April 05
Prof. Ismael H. F. Santos - [email protected]
123
Extension for complex types
 The next simplest case is extension for complex
types:
<type name='name'>
<element name='title‘ minOccurs='0'/>
<element name='forename'
minOccurs='0‘ maxOccurs='*'/>
<element name='surname'/>
</type>
 Derived type
<type name='fullName'
source='name'
derivedBy='extension'>
<element name='genMark'
minOccurs='0'/>
</type>
April 05
Prof. Ismael H. F. Santos - [email protected]
124
The effective type
<type name='fullName'>
<element name='title'
minOccurs='0'/>
<element name='forename'
minOccurs='0'
maxOccurs='*'/>
<element name='surname'/>
<element name='genMark'
minOccurs='0'/>
</type>
April 05
Prof. Ismael H. F. Santos - [email protected]
125
Restriction for complex types
 Restriction for complex types is harder to
handle syntactically, because of the
significance of linear order in content models,
but the semantics are completely parallel to
the simple type case:
April 05
Prof. Ismael H. F. Santos - [email protected]
126
Restriction example
 Restriction for complex types is
harder to handle syntactically,
because of the significance of linear
order in content models, but the
semantics are completely parallel to
the simple type case:
<type name='simpleName'
source='name'
derivedBy='restriction'>
<restrictions>
<element name='title'
maxOccurs='0'/>
<element
name='forename'
90
80
70
60
Leste
Oeste
Norte
50
40
30
20
10
0
1° Trim
2° Trim
3° Trim
4° Trim
minOccurs='1'/>
</restrictions>
</type>
April 05
Prof. Ismael H. F. Santos - [email protected]
127
Restriction and Inheritance
 Just as in the <datatype> case, the content
model aspects not mentioned are left alone,
including the "maxOccurs='*'" on
<forename> and the whole particle for
<surname>, so the 'effective content model' of
'simpleName' is
April 05
Prof. Ismael H. F. Santos - [email protected]
128
Effective type
<type name='simpleName'>
<element name='title'
maxOccurs='0'
minOccurs='0'/>
<!-- i.e. forbidden -->
<element name='forename'
minOccurs='1'
maxOccurs='*'/>
<element name='surname'/>
</type>
April 05
Prof. Ismael H. F. Santos - [email protected]
129
Instances
 Given all the example definitions above, all of
<name>
<title>Ms</title>
<surname>Steinem</surname>
</name>
<name xsi:type='simpleName'>
<foreName>Harry</foreName>
<foreName>S</foreName>
<surname>Truman</surname>
</name>
April 05
Prof. Ismael H. F. Santos - [email protected]
130
Another instance
<name xsi:type='fullName'>
<forename>Al</forename>
<surname>Gore</surname>
<genMark>Jr</genMark>
</name>
 all would be schema-valid per
<element name='name' type='name'/>
April 05
Prof. Ismael H. F. Santos - [email protected]
131
Connecting Instances and Schemas
 A schema is not a namespace
 The connection cannot be made rigid
 The draft identifies three layers, first is

schema-valid(EII,TypeName,ComponentSet)
 The TypeName is a (namespaceURI,NCName)
pair
 The component set is made up of
(namespaceURI,NCName,component) triples
April 05
Prof. Ismael H. F. Santos - [email protected]
132
fim
April 05
Prof. Ismael H. F. Santos - [email protected]
133
Download

An XML Schema - PUC-Rio