Aula Xml Schema - XSD

27
Linguagem para Organização e Transferência de dados para Web. Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015 Parte 4 - XSD

Transcript of Aula Xml Schema - XSD

Page 1: Aula Xml Schema - XSD

Linguagem para Organização e Transferência de dados para Web.

Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015

Parte 4 - XSD

Page 2: Aula Xml Schema - XSD

XML Schema (XSD)

Page 3: Aula Xml Schema - XSD

XML Schema - XSD• XSD - Xml Schema Definition

• Um XML Schema, descreve a estrutura de um arquivo XML, assim como o DTD o XML Schema define um XML válido.

• Define:

• define os elementos que podem aparecer no documento.

• define os atributos que podem aparecer no documento.

• define quais elementos serão elementos filhos.

• define a ordem dos elementos.

• define o número de elementos filhos.

• define onde um elemento é vazio ou pode conter um texto.

• define tipos de dados para elementos e atributos.

• define valores padrões para elementos e atributos.

Page 4: Aula Xml Schema - XSD

XML bem formado e válido

• Segundo Myer (2005) , existem dois tipo de “legalidade” de documentos XML:

1. Documentos bem formado;

2. Documentos válidos;

Page 5: Aula Xml Schema - XSD

DTD x XSD• O XSD, escrito em XML, é mais poderoso e potente

que um DTD. Alguns exemplos desta capacidade incluem suas definições para tipos de dados, que lhe permite especificar quando um elemento deve possuir um dado como um valor Inteiro, Data ou String.

• Conforme o W3C, o XML Schema tem exatamente o mesmo propósito que o DTD, porém, com o intuito de ser o sucessor do DTD.

Page 6: Aula Xml Schema - XSD

DTD x XSD

DTD XSD

Page 7: Aula Xml Schema - XSD

Razões para o uso do XSD• XML Schemas são extensíveis para adições

futuras.

• XML Schemas são mais ricos e mais úteis que os DTDs.

• XML Schemas são escritos em XML.

• XML Schemas suportam tipos de dados.

• XML Schemas suportam namespaces.

Page 8: Aula Xml Schema - XSD

XSD Referencia- Exemplo<?xml  version="1.0"  encoding="UTF-­‐8"?>  <ordemCompra  ordemid="889923"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance"  xsi:noNamespaceSchemaLocation="ordemCompra.xsd">      <ordemFuncionario>Joao  Nunes</ordemFuncionario>      <enviarPara>          <nome>Cassio  Adriano</nome>          <endereco>Rua  de  Teste</endereco>          <cidade>Sao  Paulo</cidade>          <pais>Brasil</pais>      </enviarPara>      <item>          <descricao>Boneca  Barbie</descricao>          <nota>Edição  Especial</nota>          <quantidade>1</quantidade>          <preco>180,90</preco>      </item>  </ordemCompra>

Page 9: Aula Xml Schema - XSD

XSD Declaração - Passo 1<?xml  version="1.0"  encoding="UTF-­‐8"  ?>  <xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema">  ...  </xs:schema>  

O Atributo xmlns indica que os elementos utilizados no documento XSD como tipos de dados (schema, element, complexType, sequence, string, boolean, etc…) vêm do namespace “http://www.w3.org/2001/XMLSchema”.Note também que o prefixo “xs" é adicionado de forma que todos os elementos utilizados neste documento deveram ser prefixados com “xs".

Page 10: Aula Xml Schema - XSD

XSD Declaração - Passo 2

<xs:element  name="ordemCompra">      <xs:complexType>          <xs:sequence>              ...          </xs:sequence>      </xs:complexType>  </xs:element>

Page 11: Aula Xml Schema - XSD

XSD Declaração - Passo 3

<xs:element  name="ordemFuncionario"  type="xs:string"/>

Page 12: Aula Xml Schema - XSD

XSD Declaração - Passo 4

<xs:element  name="enviarPara">      <xs:complexType>          <xs:sequence>              <xs:element  name="nome"  type="xs:string"/>              <xs:element  name="endereco"  type="xs:string"/>              <xs:element  name="cidade"  type="xs:string"/>              <xs:element  name="pais"  type="xs:string"/>          </xs:sequence>      </xs:complexType>  </xs:element>

Page 13: Aula Xml Schema - XSD

XSD Declaração - Passo 5

<xs:element  name="item"  maxOccurs="unbounded">      <xs:complexType>          <xs:sequence>              <xs:element  name="descricao"  type="xs:string"/>          <xs:element  name="nota"  type="xs:string"  minOccurs="0"/>          <xs:element  name="quantidade"  type="xs:positiveInteger"/>              <xs:element  name="preco"  type="xs:decimal"/>          </xs:sequence>      </xs:complexType>  </xs:element>

Page 14: Aula Xml Schema - XSD

XSD Declaração - Passo 6

<xs:attribute  name="ordemid"  type="xs:string"    use="required"/>

Page 15: Aula Xml Schema - XSD

XSD Declaração - Passo 7<?xml  version="1.0"  encoding="UTF-­‐8"  ?>  <xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema">  

<xs:element  name="ordemCompra">      <xs:complexType>          <xs:sequence>              <xs:element  name="ordemFuncionario"  type="xs:string"/>              <xs:element  name="enviarPara">                  <xs:complexType>                      <xs:sequence>                          <xs:element  name="nome"  type="xs:string"/>                          <xs:element  name="endereco"  type="xs:string"/>                          <xs:element  name="cidade"  type="xs:string"/>                          <xs:element  name="pais"  type="xs:string"/>                      </xs:sequence>                  </xs:complexType>              </xs:element>              <xs:element  name="item"  maxOccurs="unbounded">                  <xs:complexType>                      <xs:sequence>                          <xs:element  name="descricao"  type="xs:string"/>                          <xs:element  name="nota"  type="xs:string"  minOccurs="0"/>                          <xs:element  name="quantidade"  type="xs:positiveInteger"/>                          <xs:element  name="preco"  type="xs:decimal"/>                      </xs:sequence>                  </xs:complexType>              </xs:element>          </xs:sequence>          <xs:attribute  name="ordemid"  type="xs:string"  use="required"/>      </xs:complexType>  </xs:element>  </xs:schema>

Page 16: Aula Xml Schema - XSD

XSD Elementos Simples• Um elemento complexo é uma estrutura XML que contém mais de um elemento dentro dele.

<xs:element name=“funcionario" type=“xs:string” />

Page 17: Aula Xml Schema - XSD

XSD Elementos Complexos• Um elemento complexo é uma estrutura XML que contém mais de um elemento dentro dele.

<xs:element name="funcionario">

<xs:complexType>

<xs:sequence>

<xs:element name="nome" type="xs:string"/>

<xs:element name="sobrenome" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Page 18: Aula Xml Schema - XSD

XSD Tipos de Dados• XML Schema possuí vários tipos de dados, abaixo

estão a lista dos mais comuns:

• xs:string • xs:date • xs:time • xs:integer • xs:decimal • xs:boolean

Page 19: Aula Xml Schema - XSD

Exercício 1 - Criar um XSD para a estrutura abaixo

<?xml  version="1.0"  encoding="UTF-­‐8"?>  <pessoa>      <nome>Joao  Nunes</nome>  </pessoa>

Page 20: Aula Xml Schema - XSD

Exercício 2 - Criar um XSD para a estrutura abaixo

<?xml  version="1.0"  encoding="UTF-­‐8"?>  <pessoa>      <nome>Joao</nome>    <sobrenome>Nunes</sobrenome>  

</pessoa>

Page 21: Aula Xml Schema - XSD

Exercício 3 - Criar um XSD para a estrutura abaixo

Page 22: Aula Xml Schema - XSD

Elementos XSD Simples com Valor Padrão

• O valor padrão (default) é um valor aplicado ao elemento, porém, o mesmo pode ser modificado.

<xs:element  name="pais"  type=“xs:string"  default="Brasil"  />  

• O valor fixo (fixed) é um valor aplicado ao elemento, porém, e o mesmo não poderá ser modificado, o elemento poderá ser deixado em brando que o mesmo receberá o valor padrão.

<xs:element  name="pais"  type=“xs:string"  fixed=“Brasil"  />

Page 23: Aula Xml Schema - XSD

Elementos XSD Simples com atributos

<xs:element  name="pais">    <xs:complexType>  <xs:simpleContent>  <xs:extension  base=“xs:string”>  <xs:attribute  name=“codigo"  type=“xs:string”  />  </xs:extension>  </xs:simpleContent>  </xs:complexType>  

</xs:element>

Page 24: Aula Xml Schema - XSD

Exercício 4 - Criar um XSD para a estrutura abaixo

<?xml  version="1.0"  encoding="UTF-­‐8"?>  <pessoa>      <nome  idade="18">Joao  Nunes</nome>  </pessoa>

Page 25: Aula Xml Schema - XSD

Exercício 5 - Criar um XSD para a estrutura abaixo

<?xml version="1.0" encoding="UTF-8"?> <!-- Aqui começa o email --> <mensagem> <!-- quem enviou a mensagem --><de id="1">algu&#233;m</de><para>uma pessoa</para><assunto>digite o assunto</assunto><texto>abcdefghijk</texto>

</mensagem>

Page 26: Aula Xml Schema - XSD

Exercício 6- Criar um XSD para o XML

Page 27: Aula Xml Schema - XSD