Linguagem para Organização e
Transferência de dados para Web.
Prof. Rudson Kiyoshi S. Carvalho
Anhanguera - 2015
Parte 4 - XSD
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.
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;
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.
DTD x XSD
DTD 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.
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>
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".
XSD Declaração - Passo 2
<xs:element	
  name="ordemCompra">	
  
	
  	
  <xs:complexType>	
  
	
  	
  	
  	
  <xs:sequence>	
  
	
  	
  	
  	
  	
  	
  ...	
  
	
  	
  	
  	
  </xs:sequence>	
  
	
  	
  </xs:complexType>	
  
</xs:element>
XSD Declaração - Passo 3
<xs:element	
  name="ordemFuncionario"	
  
type="xs:string"/>
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>
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>
XSD Declaração - Passo 6
<xs:attribute	
  name="ordemid"	
  type="xs:string"	
  	
  
use="required"/>
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>
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” />
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>
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
Exercício 1 - Criar um XSD
para a estrutura abaixo
<?xml	
  version="1.0"	
  encoding="UTF-­‐8"?>	
  
<pessoa>	
  
	
  	
  <nome>Joao	
  Nunes</nome>	
  
</pessoa>
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>
Exercício 3 - Criar um XSD
para a estrutura abaixo
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"	
  />
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>
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>
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>
Exercício 6- Criar um XSD para o XML
Aula Xml Schema - XSD

Aula Xml Schema - XSD

  • 1.
    Linguagem para Organizaçãoe Transferência de dados para Web. Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015 Parte 4 - XSD
  • 2.
  • 3.
    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.
  • 4.
    XML bem formadoe válido • Segundo Myer (2005) , existem dois tipo de “legalidade” de documentos XML: 1. Documentos bem formado; 2. Documentos válidos;
  • 5.
    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.
  • 6.
  • 7.
    Razões para ouso 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.
  • 8.
    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>
  • 9.
    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".
  • 10.
    XSD Declaração -Passo 2 <xs:element  name="ordemCompra">      <xs:complexType>          <xs:sequence>              ...          </xs:sequence>      </xs:complexType>   </xs:element>
  • 11.
    XSD Declaração -Passo 3 <xs:element  name="ordemFuncionario"   type="xs:string"/>
  • 12.
    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>
  • 13.
    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>
  • 14.
    XSD Declaração -Passo 6 <xs:attribute  name="ordemid"  type="xs:string"     use="required"/>
  • 15.
    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>
  • 16.
    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” />
  • 17.
    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>
  • 18.
    XSD Tipos deDados • 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
  • 19.
    Exercício 1 -Criar um XSD para a estrutura abaixo <?xml  version="1.0"  encoding="UTF-­‐8"?>   <pessoa>      <nome>Joao  Nunes</nome>   </pessoa>
  • 20.
    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>
  • 21.
    Exercício 3 -Criar um XSD para a estrutura abaixo
  • 22.
    Elementos XSD Simples comValor 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"  />
  • 23.
    Elementos XSD Simples comatributos <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>
  • 24.
    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>
  • 25.
    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>
  • 26.
    Exercício 6- Criarum XSD para o XML