Linguagem para Organização e Transferência de dados para Web.
Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015
Parte - 2 DTD
Introdução• Um DTD (Document Type Definition) especifica um conjunto
de regras que define a estrutura de um documento XML.
• O DTD pode aparecer no topo do XML (no prólogo) ou em um documento separado.
<?xml version=“1.0” ?><!DOCTYPE noRaiz […]>
<?xml version=“1.0” ?><!DOCTYPE noRaiz SYSTEM "meuDTD.dtd">
• Os DTDs são uma ótima maneira para garantir a consistência dos dados XML compartilhados entre diferentes pessoas e empresas. Podemos utilizar um DTD para validar se o documento XML enviado por um terceiro está formado adequadamente antes de tentarmos utiliza-lo.
DTD - Utilização• Declaração de um conjunto de elementos. Você não
pode utilizar outros elementos que não estejam definidos neste documento.
• Defini quais os elementos ou dados que aquele determinado elemento XML pode conter, em qual ordem, quantidade e se é opcional ou obrigatório.
• Declara um conjunto de atributos para cada elemento. Cada declaração de atributo define o nome, tipo (datatype), valores padrões (se aplicável), e comportamento (obrigatório ou opcional).
Construindo um DTD
• Para criarmos um elemento no DTD devemos utilizar a TAG <!ELEMENT> e ela deve ser declarada sempre com todas as letras em maiúsculas.
<!ELEMENT nóDocumento especElemento>
Declaração de um Elemento
• No exemplo acima declaramos que nosso XML deverá conter o elemento (nó) “destinatario” e a especificação entre parênteses (#PCDATA) Parsed Character Data especifica que este elemento terá um valor do tipo texto e um processador XML deverá analisar ou apenas verificar a existência deste valor.
<!ELEMENT destinatario (#PCDATA) >
Definição de um elemento que contenha texto.
Elemento
• No exemplo acima declaramos que nosso XML deverá conter o elemento (nó) “tamanho” e o mesmo sera um elemento vazio, podendo apenas trabalhar com conjuntos de atributos.
• Nota: EMPTY não utiliza parênteses como o (#PCDATA).
• Exemplo XML:
<!ELEMENT tamanho EMPTY >
Definição de um elemento vazio.
Elemento
• No exemplo acima declaramos que nosso XML deverá conter o elemento (nó) “pedido” e o mesmo terá um único elemento numero.
• Exemplo XML:
<!ELEMENT pedido (numero) >
Definição de um elemento que contenha um filho.
Elemento
• No exemplo acima declaramos que nosso XML deverá conter o elemento (nó) “endereco” e o mesmo terá os filhos cep, rua, numero, bairro, complemento, cidade e uf.
• Exemplo XML:
<!ELEMENT endereco (cep, rua, numero, bairrocomplemento, cidade, uf) >
Definição de um elemento que contenha filhos diferentes.
Elemento - Qualificadores
• O * indica que o nó filho pedido pode se repetir zero ou muitas vezes.
• Exemplo XML:
<!ELEMENT pedidos (pedido*) >
Definição de um elemento várias ocorrências de um filho.
Elemento - Qualificadores
• O + indica que o nó filho pedido pode se repetir uma ou muitas vezes, porém, é necessário existir uma ocorrência no mínimo..
• Exemplo XML:
<!ELEMENT pedidos (pedido+) >
Definição de um elemento várias ocorrências de um filho.
Elemento - Qualificadores
• O ? indica que o nó filho pedido pode aparecer no máximo uma ou nenhuma vez.
• Exemplo XML:
<!ELEMENT pedidos (pedido?) >
Definição de um elemento única ocorrência de um filho.
Reforçando Qualificador• * Significa zero ou mais vezes
• + Significa uma ou mais vezes
• ? Significa zero ou uma vez apenas
• Nota: Um elemento sem qualificador deverá aparecer uma única vez.
Elementos Opcionais
• O | indica que o nó "transacao" pode conter um nó filho transferencia ou um nó filho estorno.
• Exemplo XML:
<!ELEMENT transacao (transferencia | estorno) >
Em alguns casos podemos precisar de um elemento XML ou de outro.
ou
Elementos Opcionais
• O | indica que o nó "transacao" pode conter um nó filho transferencia ou um nó filho estorno.
• Exemplo XML:
<!ELEMENT estoria ((titulo, conteudo) | (titulo, resumo, conteudo)) >
Em alguns casos podemos precisar de um elemento XML ou de outro.
ou
Elemento Indefinido
• O ANY define que o nó "estrutura" poderá receber qualquer coisa, como novos elementos, textos, sem um suporte a uma estrutura fechada.
<!ELEMENT estrutura ANY >
Definição de um elemento que pode aceitar qualquer coisa.
Resumo de Qualificadores• , -> Descreve uma sentença obrigatória de elementos. Também funciona como operador E
(AND). Exemplo: A,B significa que B deve vir depois de A. B seguido de A não é permitido.
• | -> Descreve uma alternativa, funciona como o operador OU (OR). Exemplo: A|B|C significa que qualquer elemento é aceitável. Apenas uma opção é permitida, você deve escolher entre um dos três elementos.
• ( ) -> Agrupa o conteúdo. Você pode usar a quantidade e parênteses que for preciso. Exemplo: ( A | B ), C significa que você deve escolher entre A ou B, e este deve ser seguido por um C. Portanto, tanto A C e B C são permitidos.
• ? -> Descreve uma sentença opcional. Exemplo: A ? significa que você pode escolher se vai usar ou não o elemento A.
• + -> Requere que pelo menos uma vez o elemento seja declarado, e não limite de quantas vezes este se repete. Exemplo: (A|B)+ significa que deve haver um número positivo e diferente de zero de As ou Bs. A sequência ABBBAAA é válida.
• * -> Significa que o elemento pode aparecer várias vezes, não tendo limite, e também é opcional. Exemplo: (A|B)* significa que a sequência pode ter tamanho zero e pode ter inúmeros elementos A ou B.
Atributos
• Atributos podem ser úteis para fornecer dados adicionais sobre um elemento. As informações contidas em atributo tendem a ser sobre o conteúdo do documento XML, e não são o conteúdo em si.
• Um atributo só pode aparecer num documento XML válido se ele for declarado.
Definição de um Atributo
• Esta definição diz que o elemento “peso” pode conter um atributo unidade que é opcional por causa do #IMPLIED, e que contem texto devido ao uso do CDATA.
<!ELEMENT peso (#PCDATA) ><!ATTLIST peso unidade CDATA #IMPLIED>
Definição de um Atributo
• Esta definição diz que o elemento “peso” pode conter um atributo unidade que é obrigatório por causa do #REQUIRED, e que contem texto devido ao uso do CDATA.
<!ELEMENT peso (#PCDATA) ><!ATTLIST peso unidade CDATA #REQUIRED>
Quais dos XMLs abaixo são validos para o DTD?
A. <peso>40</peso>
B. <peso unidade=“Kg">40</peso>
C. <peso unidade="40">Kg</peso>
<!ELEMENT peso (#PCDATA) ><!ATTLIST peso unidade CDATA #REQUIRED>
Atributo com Valor Padrão
• Esta definição diz que o elemento “peso” pode conter um atributo unidade e que seu valor padrão é Kg.
<!ELEMENT peso (#PCDATA) ><!ATTLIST peso unidade CDATA "Kg">
Atributo com Valor Padrão
• Esta definição diz que o elemento “peso” contém um atributo unidade e que seu valor padrão é Kg.
<!ELEMENT peso (#PCDATA) ><!ATTLIST peso unidade CDATA "Kg" #REQUIRED>
Atributo com Valor Padrão
• Esta definição especificamos que o nó cliente sempre terá um atributo codigo.
<!ELEMENT cliente (nome, documento, endereco) ><!ATTLIST cliente codigo CDATA #REQUIRED>
Entidades no DTD
• Entidades são como entradas ou atalhos. Com uma entidade você define seu nome e o texto pelo qual ela será substituída.
Entidade
• A entidade copyright define um texto padrão que será apresentado, toda vez que a entidade seja referenciada num documento XML
• Exemplo:
<conteudo> Este texto é de conteúdo… ©right; </conteudo>
<!ENTITY copyright "copyright 1995, Companhia das Letras, [2008]" >
Limitações• Não obedecem a sintaxe XML e requer que os
analisadores de sintaxe suportem uma linguagem adicional.
• Não suportam Namespaces.
• Não possuem definição de tipos de dados (inteiro, string, data, etc…), o que reduz a capacidade de validação.
• Possuem capacidade limitada para definir a quantidade de elementos filhos que um elemento pai pode ter.
Top Related