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
<?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" ?>
<xsd:schema
xmlns:xsd=http://www.w3.org/2001/XMLSchema
targetNamespace=http://your_namespace
elementFormDefault="qualified">
<xsd:element ...
<!– definição de elementos e atributos -->
...
</xsd:schema>
Declaração XML
Root
namespaceprefixo xsd
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
Documento
pessoas.xsd
<?xml version="1.0" encoding="ISO-8859-1"?>
<pessoas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=“pessoas.xsd" >
...
pessoas.xml
XML Schema
Referenciar um Schema no XML – (2) Atributo xsi:schemaLocation
pessoas.xml
pessoas.xsd
<?xml version="1.0" encoding="ISO-8859-1"?><pessoas xmlns=http://your_namespacexmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation="http://your_namespace 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 float date (ccyy-mm-dd)
anyURI decimal time (hh:mm:ss.sss)
....
Hierarquia de tipos de dados primitivosanySimpleType –> 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
Atributo name de xsd:simpleType Usados para definir tipos de dados de elementos
<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 >
<xsd:element name="indicativo" type="Toperador">
XML Schema
Exemplos de restrições xsd:length
xsd:pattern
<xsd:simpleType name="Tcodigo"><xsd:restriction base="xsd:string">
<xsd:length value="7" /></xsd:restriction>
</xsd:simpleType>
<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
Elemento xsd:union A instância pode conter um dos valores
especificados pelo atributo memberTypes
<xsd:simpleType name="Tmes" >
<xsd:union memberTypes="Tmesstr Tmesnum" />
</xsd:simpleType>
XML Schema
Derivação por lista
Elemento xsd:list Exemplo XML
<web>http://www.dei.isep.ipp.pt http://w2ks.dei.isep.ipp.pt</web>
<xsd:simpleType name="Tenderecosweb" ><xsd:list itemType="xsd:anyURI" /></xsd:simpleType>
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 atributosElemento 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></xsd:element>
Atributo depois dos elementos
<pessoa id=“P123"> <nome>António José Silva</nome> <dnascimento>2004-07-12</dnascimento></pessoa>