tecnologias xml xml schema. xml schema documento xml válido um documento schema especifica as...
TRANSCRIPT
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>