Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Programação » XML » Um pouco além do XML: Introdução ao XML Schema (XSD) - Parte 4 -->
 
Avaliação: | Publicado em: 27/12/2006
Um pouco além do XML: Introdução ao XML Schema (XSD) - Parte 4


Mecanismos de herança

Um dos maiores benefícios da orientação a objeto é o mecanismo de herança. Através da herança, é possível reaproveitar diversas propriedades e comportamentos das classes pai (superclasses) para as classes filhas (subclasses). No XML Schema, também existem sintaxes para construir mecanismos de herança. No exemplo abaixo, é definido um supertipo chamado “tCliente”. Abaixo desse supertipo, existem dois subtipos que herdam as características de “tCliente”. São eles “tPessoaFisica” e “tPessoaJuridica”.

De acordo com esse esquema todos os clientes possuem um país de origem e uma data de cadastro. Os clientes do tipo pessoa física possuem nome, sobrenome e CPF. Os clientes do tipo pessoa jurídica possuem uma razão social, um nome fantasia, uma sigla e um CNPJ. Ambos os tipos de cliente possuem um país de origem e uma data de cadastro já que independente do seu tipo eles continuam sendo clientes.

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!--Declaração do tipo tVeiculo-->
<xsd:complexType name="tCliente">
 <xsd:sequence>
  <xsd:element name="Pais" type="xsd:string"/>
  <xsd:element name="DataCadastro" type="xsd:date"/>
 </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="tPessoaFisica">
 <xsd:complexContent>
  <xsd:extension base="tCliente">
   <xsd:sequence>
    <xsd:element name="Nome" type="xsd:string"/>
    <xsd:element name="SobreNome" type="xsd:string"/>
    <xsd:element name="CPF" type="xsd:string"/>
   </xsd:sequence>
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="tPessoaJuridica">
 <xsd:complexContent>
  <xsd:extension base="tCliente">
   <xsd:sequence>
    <xsd:element name="RazaoSocial" type="xsd:string"/>
    <xsd:element name="NomeFantasia" type="xsd:string"/>
    <xsd:element name="Sigla" type="xsd:string"/>
    <xsd:element name="CNPJ" type="xsd:string"/>
   </xsd:sequence>
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>

<xsd:element name="Clientes">
 <xsd:complexType>
  <xsd:choice maxOccurs="unbounded">
   <xsd:element name="PessoaFisica" type="tPessoaFisica" minOccurs="0"/>
   <xsd:element name="PessoaJuridica" type="tPessoaJuridica" minOccurs="0"/>
  </xsd:choice>
 </xsd:complexType>
</xsd:element>

</xsd:schema>

O documento XML abaixo pode ser validado por esse esquema.

<?xml version="1.0"?>
<Clientes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./Clientes.xsd">
    <PessoaFisica>
        <Pais>Brasil</Pais>
        <DataCadastro>2005-01-21</DataCadastro>
        <Nome>Arnaldo</Nome>
        <SobreNome>Souza</SobreNome>
        <CPF>475.988.749-11</CPF>
    </PessoaFisica>
    <PessoaJuridica>
        <Pais>Brasil</Pais>
        <DataCadastro>2006-12-15</DataCadastro>
        <RazaoSocial>Digital Signs Corporation</RazaoSocial>
        <NomeFantasia>Digital Signs</NomeFantasia>
        <Sigla>DSC</Sigla>
        <CNPJ>83.512.335/0001-16</CNPJ>
    </PessoaJuridica>
    <PessoaFisica>
        <Pais>Brasil</Pais>
        <DataCadastro>2004-03-22</DataCadastro>
        <Nome>Daniel</Nome>
        <SobreNome>Fraga</SobreNome>
        <CPF>789.035.193-47</CPF>
    </PessoaFisica>
</Clientes>


Parabens!!!
Parabéns pelo material!!! Muito prático e didático!
Tiru 80% das minhas dúvidas
Ricardo
Muito bom o artigo!!
Muito bom. Aproveito para tirar uma dúvida. Existe alguma ferramenta que faça o mapeamento (um export) de um modelo de dados para XSD? Um abraço