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

Aula de DTD Definição do Tipo de Documento

  • 1.
    Linguagem para Organizaçãoe Transferência de dados para Web. Prof. Rudson Kiyoshi S. Carvalho Anhanguera - 2015 Parte - 2 DTD
  • 2.
  • 3.
    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">
  • 4.
    Declarações de umDTD note.dtd
  • 5.
    • Os DTDssã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.
  • 6.
    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).
  • 7.
  • 8.
  • 9.
    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>
  • 10.
    Declaração de umElemento • 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.
  • 11.
    Elemento • No exemploacima 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.
  • 12.
    Elemento • No exemploacima 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.
  • 13.
    Elemento • No exemploacima 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.
  • 14.
    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.
  • 15.
    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.
  • 16.
    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.
  • 17.
    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.
  • 18.
    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
  • 19.
    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
  • 20.
    Elemento Indefinido • OANY 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.
  • 21.
    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.
  • 22.
  • 23.
    Atributos • Atributos podemser ú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.
  • 24.
    Definição de umAtributo • 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>
  • 25.
    Definição de umAtributo • 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>
  • 26.
    Quais dos XMLsabaixo 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>
  • 27.
    Atributo com ValorPadrã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">
  • 28.
    Atributo com ValorPadrã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>
  • 29.
    Atributo com ValorPadrão • Esta definição especificamos que o nó cliente sempre terá um atributo codigo. <!ELEMENT cliente (nome, documento, endereco) > <!ATTLIST cliente codigo CDATA #REQUIRED>
  • 30.
  • 31.
    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.
  • 32.
    Entidade • A entidadecopyright 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]" >
  • 33.
    Limitações • Não obedecema 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.