33
Linguagem para Organização e Transferência de dados para Web. Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015 Parte - 2 DTD

Aula de DTD Definição do Tipo de Documento

Embed Size (px)

Citation preview

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

Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015

Parte - 2 DTD

DTDDocument Type Definition

Definição de Tipo de Documento

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">

Declarações de um DTD

note.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).

Exemplo Prático

Construindo um DTD

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

• 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

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… &copyright; </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.