Aula de DTD, Doctype, Definição do Tipo de Document, XML
Size: 729.74 KB
Language: pt
Added: Mar 22, 2015
Slides: 33 pages
Slide Content
Linguagem para Organização e
Transferência de dados para Web.
Prof. Rudson Kiyoshi S. Carvalho
Anhanguera - 2015
Parte - 2 DTD
DTD
Document 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, bairro
complemento, 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.
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.