Tecnologias XML
XML Schema
XML Schema
Documento XML válido
Um documento Schema especifica as regras para a
validação de um documento XML
Um Schema especifica:
Os elementos e atributos que podem constar do
documento
A ordem e número dos elementos filhos
Tipos de dados para os elementos e atributos
Um Schema define uma classe de documentos.
Documentos XML que referenciam esse Schema são
instâncias dessa classe
XML Schema
XML
<pessoa id="123">
<nome>
António José Silva
</nome>
<data-nascimento>
<ano>1965</ano>
<mes>10</mes>
<dia>3</dia>
</data-nascimento>
<bi>4025527</bi>
</pessoa>
XML Schema
validator
-nome só pode ter letras
-data contém 3 elementos: ano, mês e dia
-mês é um numero inteiro >0 e <13
-bi é formado por 7 digitos
...
XML Schema
Informação
Validada
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://your_namespace"
elementFormDefault="qualified">
<xsd:element name="pessoas" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="pessoa" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nome" type="xsd:string" />
<xsd:element name="data-nascimento" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ano" type="xsd:int" />
<xsd:element name="mes" type="xsd:int" />
<xsd:element name="dia" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="bi" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
XML Schema
Estrutura de um Schema
<?xml version="1.0" ?>
Declaração XML
Root
<xsd:schema
xmlns:xsd=http://www.w3.org/2001/XMLSchema
targetNamespace=http://your_namespace
elementFormDefault="qualified">
namespace
prefixo xsd
<xsd:element ...
<!– definição de elementos e atributos -->
...
</xsd:schema>
XML Schema
Namespaces XML Schema
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Especifica as entidades para definir um
Schema: element, schema,simpleType
(XML
Schema Schema)
URI -> http://www.w3.org/2001/XMLSchema
Prefixo por convenção é xsd:
XML Schema
XML Schema Instance Namespaces
xmlns:xsi=http://www.w3.org/2001/
XMLSchema-instance
Deve ser referenciado por documentos
instância (XML) que usam entidades
definidas neste schema como:
xsi:schemaLocation
xsi:noNamespaceSchemaLocation
XML Schema
Referenciar um Schema no XML – (1)
Atributo xsi:noNamespaceSchemaLocation
pessoas.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<pessoas xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:noNamespaceSchemaLocation=“pessoas.xsd" >
...
Documento
pessoas.xsd
XML Schema
Referenciar um Schema no XML – (2)
Atributo xsi:schemaLocation
pessoas.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<pessoas xmlns=http://your_namespace
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://your_namespace pessoas.xsd" >
...
pessoas.xsd
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://your_namespace"
elementFormDefault="qualified">
…
XML Schema
Definição de elementos
Elemento xsd:element
O atributo name especifica o nome do
elemento no XML
O atributo type define o tipo de dados do
elemento
<xsd:element name="montante" type="xsd:float">
<montante>123.56</montante>
XML Schema
Tipos simples primitivos
<xsd:element name="ano" type="xsd:int"
/>
Tipos de dados para o conteúdo textual de
um elemento ou atributo
String
anyURI
....
float
decimal
date (ccyy-mm-dd)
time (hh:mm:ss.sss)
Hierarquia de tipos de dados primitivos
anySimpleType –> decimal –> integer -> long ...
XML Schema
Tipos simples derivados
Derivação por restrição, lista ou união
Elemento xsd:simpleType
xsd:restriction define restrições
adicionais aos valores do elemento
<xsd:element name="percentagem">
<xsd:simpleType >
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="100" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XML Schema
Operadores de restrição – facets
xsd:minInclusive - >=
xsd:maxInclusive - <=
xsd:length – tamanho fixo (string, listas)
xsd:totaldigits – o numero máximo de dígitos
xsd:pattern – expressão regular
xsd:fractionDigits - número de casas decimais.
enumeration – valores numa enumeração
XML Schema
Novos tipos de dados simples
<xsd:simpleType name="Toperador">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="91" />
<xsd:enumeration value="93" />
<xsd:enumeration value="96" />
</xsd:restriction>
</xsd:simpleType >
Atributo name de xsd:simpleType
Usados para definir tipos de dados de elementos
<xsd:element name="indicativo" type="Toperador">
XML Schema
Exemplos de restrições
xsd:length
<xsd:simpleType name="Tcodigo">
<xsd:restriction base="xsd:string">
<xsd:length value="7" />
</xsd:restriction>
</xsd:simpleType>
xsd:pattern
<xsd:simpleType name="Tbi">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{7}"/>
</xsd:restriction>
</xsd:simpleType>
XML Schema
Derivação por união
<xsd:simpleType name="Tmes" >
<xsd:union memberTypes="Tmesstr Tmesnum" />
</xsd:simpleType>
Elemento xsd:union
A instância pode conter um dos valores
especificados pelo atributo memberTypes
XML Schema
Derivação por lista
<xsd:simpleType name="Tenderecosweb" >
<xsd:list itemType="xsd:anyURI" />
</xsd:simpleType>
Elemento xsd:list
Exemplo XML
<web>http://www.dei.isep.ipp.pt
http://w2ks.dei.isep.ipp.pt</web>
XML Schema
Tipo Composto
Os elementos de tipo composto podem conter
elementos filhos e atributos
Um elemento com atributos é sempre do tipo
composto
declarado usando o elemento complexType
<xsd:element name="data-nascimento" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ano" type="xsd:int"
<xsd:element name="mes" type="xsd:int"
<xsd:element name="dia" type="xsd:int"
</xsd:sequence>
</xsd:complexType>
</xsd:element>
/>
/>
/>
XML Schema
Composição dos sub-elementos num tipo
composto
sequence – especifica uma sequência com
uma ordem fixa
choice - especifica uma escolha de um
elemento, entre os elementos declarados
all – elementos são opcionais (?) e não têm
ordem fixa
XML Schema
Restrições de ocorrência
definir o modo como os elementos ocorrem
Atributos minOccurs e maxoccurs
Usados nos operadores de composição ou na
declaração de elementos
<xsd:element name=“grupo” >
<xsd:complexType>
<xsd:sequence maxOccurs=“2” >
<element name=“aluno” type=“Taluno”>
<xsd:element name="autor" type="xsd:string"
minOccurs="1" maxOccurs="unbounded" />
Declaração de atributos
Elemento xsd:attribute
O atributo name especifica o nome e o atributo type
o tipo de dados
o tipo de dados é do tipo simples primitivo ou
derivado
declaração é feita dentro do elemento complexType
depois dos elementos
Atributo use especifica a ocorrência
required - o atributo é obrigatório
optional - o atributo é opcional (por omissão)
prohibited - o atributo deve ser omitido
Exemplo Schema com atributos
<xsd:element name="pessoa" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nome" type="xsd:string" />
<xsd:element name=“dnascimento" type="xsd:date" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"
use="required" />
</xsd:complexType>
Atributo depois
</xsd:element>
dos elementos
<pessoa id=“P123">
<nome>António José Silva</nome>
<dnascimento>2004-07-12</dnascimento>
</pessoa>
Download

xsd:element