XML – DTD
(Document Type Definitions)
Prof. Aldo de Queiroz Jr
aldo.queiroz@uniderp.edu.br
XML - DTD
 DTD (Document Type Definition) é um arquivo
de texto opcional contendo as regras de
formação da estrutura de um documento XML.
 Serve para modelar ou estabelecer o esquema
de um documento XML.
 Consiste na declaração de ELEMENTOS,
ATRIBUTOS e ENTIDADES que serão usadas
para criar documentos XML válidos.
 Permite a validação de arquivos XML recebidos.
XML - DTD
 Existem várias formas para declarar
DTD's:
DTD interno
DTD interno e externo
DTD externo
 DTD interno
<?xml version=“1.0” encoding="ISO-8859-1"?>
<!DOCTYPE curso [
<!ELEMENT CURSO (DISCIPLINA*)>
<!ELEMENT DISCIPLINA (OBJETIVO, METODOLOGIA, avaliacao)>
<!ATTLIST DISCIPLINA sem #REQUIRED>
...
]>
<CURSO>
<DISCIPLINA sem=“4”>Linguagem IV
<OBJETIVO>Ensinar XML</OBJETIVO>
<METODOLOGIA>Laboratório</METODOLOGIA>
<avaliacao>3 provas</avaliacao>
</DISCIPLINA>
</CURSO>
curso.xml
 DTD externo
<?xml version=“1.0” encoding="ISO-8859-1"?>
<!DOCTYPE curso SYSTEM “curso.dtd”>
<CURSO>
<DISCIPLINA sem=“4”>Linguagem IV
<OBJETIVO>Ensinar XML</OBJETIVO>
<METODOLOGIA>Laboratorio</METODOLOGIA>
<avaliacao>3 provas</avaliacao>
</DISCIPLINA>
</CURSO>
<!ELEMENT CURSO (DISCIPLINA*)>
<!ELEMENT DISCIPLINA (OBJETIVO,
METODOLOGIA, avaliacao)>
<!ATTLIST DISCIPLINA sem #REQUIRED>
...
curso.xml
curso.dtd
 DTD interno e externo
<?xml version=“1.0” encoding="ISO-8859-1"?>
<!DOCTYPE curso SYSTEM “curso.dtd” [
<!ELEMENT OBJETIVO (#PCDATA)>
<!ELEMENT METODOLOGIA (#PCDATA)>
<!ELEMENT avaliacao (#PCDATA)>
]>
<CURSO>
<DISCIPLINA sem=“4”>Linguagem IV
<OBJETIVO>Ensinar XML</OBJETIVO>
<METODOLOGIA>Laboratório</METODOLOGIA>
<avaliacao>3 provas</avaliacao>
</DISCIPLINA>
</CURSO>
curso.xml
<!ELEMENT CURSO (DISCIPLINA*)>
<!ELEMENT DISCIPLINA (OBJETIVO, METODOLOGIA, avaliacao)>
<!ATTLIST DISCIPLINA sem #REQUIRED>
curso.dtd
Estrutura do DTD
Composta por declarações, as quais
utilizam a sintaxe:
<! ...... >
 Definição de elemento
<!ELEMENT ...>
 Definição de atributos
<!ATTLIST ...>
 Definição de entidades
<!ENTITY ...>
DTD - Elementos
<!ELEMENT nome (lista) palavra-chave>
Declara um elemento ou tag
O elemento criado é especificado por nome
Lista enumera todas as tags que podem ser
usadas internamente à tag nome ou, então,
indica o conteúdo de texto (#PCDATA)
Palavra-chave indicam a opcionalidade ou
obrigatoriedade das tags e conteúdos
internas. Pode ser EMPTY ou ANY
DTD - Elementos
Elementos com conteúdo de caracteres
<!ELEMENT NOME (#PCDATA)>
Em um documento XML tem-se:
<NOME>Anderson Pereira</NOME>
DTD - Elementos
 Conector de Sequência (,) - Elementos com filhos
(elementos internos) obrigatórios.
<!ELEMENT CLIENTE (NOME, TELEFONE, CPF)>
 Em um documento XML tem-se:
<CLIENTE>
<NOME> ... </NOME>
<TELEFONE> ... </TELEFONE>
<CPF> ... </CPF>
</CLIENTE>
O arquivo DTD também deve conter a especificação
dos elementos NOME, TELEFONE e CPF
DTD - Elementos
Conector de Escolha (|) - Elementos com
filhos (elementos internos) opcionais.
<!ELEMENT TIPOCLIENTE (
PESSOAFISICA | PESSOAJURIDICA)>
Em um documento XML tem-se:
<TIPOCLIENTE>
<PESSOAJURIDICA> Consultoria S.A. </PESSOAJURIDICA>
</TIPOCLIENTE>
DTD - Elementos
 Alguns modificadores especiais podem ser usados
na lista de elementos
+: indica uma ou mais ocorências
*: indica zero ou mais ocorrências
?: indica zero ou uma ocorrência
<!ELEMENT EMPRESA (CLIENTE*)>
<!ELEMENT CLIENTE (NOME, TELEFONE+, CPF?)>
Uma empresa tem zero ou mais clientes.
Cada cliente possui um nome, um ou mais
telefones e zero ou um CPF.
DTD - Elementos
 Elementos que aceitam textos e outros elementos
internos
<!ELEMENT EMPRESA ANY>
 Uso de elementos mistos no documento XML
<EMPRESA>Universidade Católica Dom Bosco
<AREA>Educação</AREA>
</EMPRESA>
DTD - Elementos
Criação de elementos vazios
<!ELEMENT AUTOR EMPTY>
Uso de elementos vazios no documento XML
<br/>
ou
<br></br>
DTD - Atributos
<!ATTLIST tag lista-atributo tipo-atributo valor-padrão>
 Declara atributos para os elementos
 Tag é o nome do elemento associado
 Lista-atributo é um ou mais atributos para a tag
 Tipo-atributo é o valor que o atributo pode assumir
 Valor-padrão é o valor que o processador XML
assume se nenhum valor for fornecido pelo usuário
no documento XML
DTD - Atributos
 Os tipos de atributos podem ser
CDATA
 texto qualquer, exceto <, > e &
ID
 identificador único no arquivo XML
IDREF
 referência ao identificador de outro elemento
ENTITY
 nome de uma entidade externa
DTD - Atributos
 O valor-padrão pode ser:
#REQUIRED: uso obrigatório do atributo
#IMPLIED: o atributo é opcional na tag
“valor”: o valor dado é o padrão para
cada ocorrência
#FIXED: o atributo tem valor fixo
DTD - Atributos
 Declara um atributo obrigatório nome para o
elemento EMPRESA
<!ATTLIST EMPRESA nome CDATA #REQUIRED>
 Em XML podemos ter
<EMPRESA nome=“WW3”>...</EMPRESA>
 Mas não podemos ter
<EMPRESA>...</EMPRESA>
DTD - Atributos
Declara um atributo obrigatório tamanho para
a tag EMPRESA que deve conter um dos
seguintes valores: pequena, média ou grande.
O valor padrão é pequena.
<!ATTLIST EMPRESA tamanho (peq|med|grd) "peq" #REQUIRED>
Em XML podemos ter
<EMPRESA tamanho=“med”>...</EMPRESA>
DTD - Atributos
 Declara um atributo opcional tamanho para a tag
EMPRESA com valor padrão "pequena".
<!ATTLIST EMPRESA tamanho CDATA "peq“ #IMPLIED >
 Em XML podemos ter
<EMPRESA>...</EMPRESA>
<EMPRESA tamanho=“grd”>...</EMPRESA>
DTD - Atributos
 Declara o atributo opcional tipo para o elemento
EMPRESA que só pode assumir um dos valores
especificados – micro, pequena, grande. Não há
um valor padrão, portanto o processador escolhe
aleatoriamente um valor para o atributo tipo.
<!ATTLIST EMPRESA tipo (micro|pequena|grande) #IMPLIED>
 No documento XML tem-se
<EMPRESA>
...
</EMPRESA>
<EMPRESA tipo=“grande”>
...
</EMPRESA>
<EMPRESA tipo=“A”>
...
</EMPRESA>
DTD - Atributos
Declara três atributos para o elemento
EMPRESA com valores padrão (default)
<!ATTLIST EMPRESA tipo CDATA "micro"
faturamento CDATA "baixo"
funcionarios CDATA "menos de 100">
Caso os valores dos atributos tipo,
faturamento e funcionarios não seja
fornecido no documento XML, o processador
assume, respectivamente, os valores micro,
baixo e menos de 100.
DTD - Atributos
 Em um documento XML podemos ter
<EMPRESA tipo=“multinacional”>
.
.
.
</EMPRESA>
<EMPRESA faturamento=“medio” funcionarios=“2300”>
.
.
.
</EMPRESA>
É uma empresa
multinacional com
faturamento baixo
e menos de 100
funcionários
É uma micro
empresa com
faturamento
médio e 2300
funcionários
DTD - Atributos
Declara o atributo com valor fixo rodas
para o elemento CARRO com o valor 4
<!ATTLIST AUTOMOVEL rodas CDATA #FIXED "4">
No documento XML tem-se
<AUTOMOVEL rodas=“4">Fusca</AUTOMOVEL>
<AUTOMOVEL rodas=“4">Ferrari</AUTOMOVEL>
<AUTOMOVEL rodas=“4">Fusca</ AUTOMOVEL>
<AUTOMOVEL rodas=“2">Honda CG-125</ AUTOMOVEL>
DTD - Atributos
Declara o atributo obrigatório RA para o
elemento ALUNO, cujo valor deve ser único
no documento XML
<!ATTLIST ALUNO RA ID #REQUIRED>
No documento XML tem-se
<ALUNO RA="89021-1">Fulano de Tal</ALUNO>
<ALUNO RA="84317-9">Beltrano Disso</ALUNO>
<ALUNO RA="89021-1">Fulano de Tal</ALUNO>
<ALUNO RA=" 89021-1 ">Beltrano Disso</ALUNO>
DTD - Atributos
 Declara o atributo obrigatório RA para o elemento
NOTA que é uma referência a um identificador que
existe no documento XML
 No documento XML Aluno
<!ATTLIST ALUNO RA ID #REQUIRED>
<ALUNO RA="89021-1">Fulano de Tal</ALUNO>
<ALUNO RA="84317-9">Beltrano Disso</ALUNO>
No documento XML Nota
<!ATTLIST NOTA cod IDREF #REQUIRED>
<NOTA cod="89021-1">9,0</NOTA>
<NOTA cod="84317-9">4,5</NOTA>
DTD - Atributos
Exemplos de atributos:
<!ATTLIST pessoa genero CDATA “masculino">
<!ATTLIST pessoa genero CDATA #FIXED "masculino">
<!ATTLIST pessoa genero CDATA #REQUIRED>
<!ATTLIST pessoa genero CDATA #IMPLIED>
<!ATTLIST pessoa genero (masculino|feminino) "masculino">
DTD - Entidades
Entidades servem para
Substituição automática de conteúdo
Referência a documentos externos
Controlar parâmetros em documentos DTD
Processamento condicional
DTD - Entidades
<!ENTITY nome frase>
Declara entidades
Globais
De parâmetro
nome é a identificação única da entidade
frase é o conteúdo
DTD - Entidades
<!ENTITY personagem “Mickey Mouse">
Quando a entidade &personagem; aparecer
em um documento XML, ela será substituída
por "Mickey Mouse".
<NOME>&personagem</NOME>
<NOME>Mickey Mouse</NOME>
DTD - Entidades
<!ENTITY resumo SYSTEM
"http://www.unaes.br/resumo.xml">
A declaração acima substitui a referência &resumo;
pelo conteúdo de http://www.unaes.br/resumo.xml
DTD - Entidades
Entidades de parâmetro atuam apenas dentro
de DTDs e não podem ser processadas em
documentos XML
Esse tipo de entidade é declarada da seguinte
forma:
<!ENTITY % nome "tipo">
nome identifica a entidade
tipo pode ser o tipo de atibutos ou uma lista de
elementos
DTD - Entidades
<!ENTITY % string "CDATA">
<!ENTITY % chave "ID">
<!ENTITY % lista "MEMORIA, VELOCIDADE">
<!ELEMENT MICROCOMPUTADOR ANY>
<!ELEMENT MICRO (lista)>
<!ATTLIST MICRO codigo %chave; #REQUIRED>
<!ELEMENT MEMORIA (#PCDATA)>
<!ATTLIST MEMORIA tipo %string; #REQUIRED>
<!ELEMENT VELOCIDADE (#PCDATA)>

XML - Parte 2

  • 1.
    XML – DTD (DocumentType Definitions) Prof. Aldo de Queiroz Jr aldo.queiroz@uniderp.edu.br
  • 2.
    XML - DTD DTD (Document Type Definition) é um arquivo de texto opcional contendo as regras de formação da estrutura de um documento XML.  Serve para modelar ou estabelecer o esquema de um documento XML.  Consiste na declaração de ELEMENTOS, ATRIBUTOS e ENTIDADES que serão usadas para criar documentos XML válidos.  Permite a validação de arquivos XML recebidos.
  • 3.
    XML - DTD Existem várias formas para declarar DTD's: DTD interno DTD interno e externo DTD externo
  • 4.
     DTD interno <?xmlversion=“1.0” encoding="ISO-8859-1"?> <!DOCTYPE curso [ <!ELEMENT CURSO (DISCIPLINA*)> <!ELEMENT DISCIPLINA (OBJETIVO, METODOLOGIA, avaliacao)> <!ATTLIST DISCIPLINA sem #REQUIRED> ... ]> <CURSO> <DISCIPLINA sem=“4”>Linguagem IV <OBJETIVO>Ensinar XML</OBJETIVO> <METODOLOGIA>Laboratório</METODOLOGIA> <avaliacao>3 provas</avaliacao> </DISCIPLINA> </CURSO> curso.xml
  • 5.
     DTD externo <?xmlversion=“1.0” encoding="ISO-8859-1"?> <!DOCTYPE curso SYSTEM “curso.dtd”> <CURSO> <DISCIPLINA sem=“4”>Linguagem IV <OBJETIVO>Ensinar XML</OBJETIVO> <METODOLOGIA>Laboratorio</METODOLOGIA> <avaliacao>3 provas</avaliacao> </DISCIPLINA> </CURSO> <!ELEMENT CURSO (DISCIPLINA*)> <!ELEMENT DISCIPLINA (OBJETIVO, METODOLOGIA, avaliacao)> <!ATTLIST DISCIPLINA sem #REQUIRED> ... curso.xml curso.dtd
  • 6.
     DTD internoe externo <?xml version=“1.0” encoding="ISO-8859-1"?> <!DOCTYPE curso SYSTEM “curso.dtd” [ <!ELEMENT OBJETIVO (#PCDATA)> <!ELEMENT METODOLOGIA (#PCDATA)> <!ELEMENT avaliacao (#PCDATA)> ]> <CURSO> <DISCIPLINA sem=“4”>Linguagem IV <OBJETIVO>Ensinar XML</OBJETIVO> <METODOLOGIA>Laboratório</METODOLOGIA> <avaliacao>3 provas</avaliacao> </DISCIPLINA> </CURSO> curso.xml <!ELEMENT CURSO (DISCIPLINA*)> <!ELEMENT DISCIPLINA (OBJETIVO, METODOLOGIA, avaliacao)> <!ATTLIST DISCIPLINA sem #REQUIRED> curso.dtd
  • 7.
    Estrutura do DTD Compostapor declarações, as quais utilizam a sintaxe: <! ...... >  Definição de elemento <!ELEMENT ...>  Definição de atributos <!ATTLIST ...>  Definição de entidades <!ENTITY ...>
  • 8.
    DTD - Elementos <!ELEMENTnome (lista) palavra-chave> Declara um elemento ou tag O elemento criado é especificado por nome Lista enumera todas as tags que podem ser usadas internamente à tag nome ou, então, indica o conteúdo de texto (#PCDATA) Palavra-chave indicam a opcionalidade ou obrigatoriedade das tags e conteúdos internas. Pode ser EMPTY ou ANY
  • 9.
    DTD - Elementos Elementoscom conteúdo de caracteres <!ELEMENT NOME (#PCDATA)> Em um documento XML tem-se: <NOME>Anderson Pereira</NOME>
  • 10.
    DTD - Elementos Conector de Sequência (,) - Elementos com filhos (elementos internos) obrigatórios. <!ELEMENT CLIENTE (NOME, TELEFONE, CPF)>  Em um documento XML tem-se: <CLIENTE> <NOME> ... </NOME> <TELEFONE> ... </TELEFONE> <CPF> ... </CPF> </CLIENTE> O arquivo DTD também deve conter a especificação dos elementos NOME, TELEFONE e CPF
  • 11.
    DTD - Elementos Conectorde Escolha (|) - Elementos com filhos (elementos internos) opcionais. <!ELEMENT TIPOCLIENTE ( PESSOAFISICA | PESSOAJURIDICA)> Em um documento XML tem-se: <TIPOCLIENTE> <PESSOAJURIDICA> Consultoria S.A. </PESSOAJURIDICA> </TIPOCLIENTE>
  • 12.
    DTD - Elementos Alguns modificadores especiais podem ser usados na lista de elementos +: indica uma ou mais ocorências *: indica zero ou mais ocorrências ?: indica zero ou uma ocorrência <!ELEMENT EMPRESA (CLIENTE*)> <!ELEMENT CLIENTE (NOME, TELEFONE+, CPF?)> Uma empresa tem zero ou mais clientes. Cada cliente possui um nome, um ou mais telefones e zero ou um CPF.
  • 13.
    DTD - Elementos Elementos que aceitam textos e outros elementos internos <!ELEMENT EMPRESA ANY>  Uso de elementos mistos no documento XML <EMPRESA>Universidade Católica Dom Bosco <AREA>Educação</AREA> </EMPRESA>
  • 14.
    DTD - Elementos Criaçãode elementos vazios <!ELEMENT AUTOR EMPTY> Uso de elementos vazios no documento XML <br/> ou <br></br>
  • 15.
    DTD - Atributos <!ATTLISTtag lista-atributo tipo-atributo valor-padrão>  Declara atributos para os elementos  Tag é o nome do elemento associado  Lista-atributo é um ou mais atributos para a tag  Tipo-atributo é o valor que o atributo pode assumir  Valor-padrão é o valor que o processador XML assume se nenhum valor for fornecido pelo usuário no documento XML
  • 16.
    DTD - Atributos Os tipos de atributos podem ser CDATA  texto qualquer, exceto <, > e & ID  identificador único no arquivo XML IDREF  referência ao identificador de outro elemento ENTITY  nome de uma entidade externa
  • 17.
    DTD - Atributos O valor-padrão pode ser: #REQUIRED: uso obrigatório do atributo #IMPLIED: o atributo é opcional na tag “valor”: o valor dado é o padrão para cada ocorrência #FIXED: o atributo tem valor fixo
  • 18.
    DTD - Atributos Declara um atributo obrigatório nome para o elemento EMPRESA <!ATTLIST EMPRESA nome CDATA #REQUIRED>  Em XML podemos ter <EMPRESA nome=“WW3”>...</EMPRESA>  Mas não podemos ter <EMPRESA>...</EMPRESA>
  • 19.
    DTD - Atributos Declaraum atributo obrigatório tamanho para a tag EMPRESA que deve conter um dos seguintes valores: pequena, média ou grande. O valor padrão é pequena. <!ATTLIST EMPRESA tamanho (peq|med|grd) "peq" #REQUIRED> Em XML podemos ter <EMPRESA tamanho=“med”>...</EMPRESA>
  • 20.
    DTD - Atributos Declara um atributo opcional tamanho para a tag EMPRESA com valor padrão "pequena". <!ATTLIST EMPRESA tamanho CDATA "peq“ #IMPLIED >  Em XML podemos ter <EMPRESA>...</EMPRESA> <EMPRESA tamanho=“grd”>...</EMPRESA>
  • 21.
    DTD - Atributos Declara o atributo opcional tipo para o elemento EMPRESA que só pode assumir um dos valores especificados – micro, pequena, grande. Não há um valor padrão, portanto o processador escolhe aleatoriamente um valor para o atributo tipo. <!ATTLIST EMPRESA tipo (micro|pequena|grande) #IMPLIED>  No documento XML tem-se <EMPRESA> ... </EMPRESA> <EMPRESA tipo=“grande”> ... </EMPRESA> <EMPRESA tipo=“A”> ... </EMPRESA>
  • 22.
    DTD - Atributos Declaratrês atributos para o elemento EMPRESA com valores padrão (default) <!ATTLIST EMPRESA tipo CDATA "micro" faturamento CDATA "baixo" funcionarios CDATA "menos de 100"> Caso os valores dos atributos tipo, faturamento e funcionarios não seja fornecido no documento XML, o processador assume, respectivamente, os valores micro, baixo e menos de 100.
  • 23.
    DTD - Atributos Em um documento XML podemos ter <EMPRESA tipo=“multinacional”> . . . </EMPRESA> <EMPRESA faturamento=“medio” funcionarios=“2300”> . . . </EMPRESA> É uma empresa multinacional com faturamento baixo e menos de 100 funcionários É uma micro empresa com faturamento médio e 2300 funcionários
  • 24.
    DTD - Atributos Declarao atributo com valor fixo rodas para o elemento CARRO com o valor 4 <!ATTLIST AUTOMOVEL rodas CDATA #FIXED "4"> No documento XML tem-se <AUTOMOVEL rodas=“4">Fusca</AUTOMOVEL> <AUTOMOVEL rodas=“4">Ferrari</AUTOMOVEL> <AUTOMOVEL rodas=“4">Fusca</ AUTOMOVEL> <AUTOMOVEL rodas=“2">Honda CG-125</ AUTOMOVEL>
  • 25.
    DTD - Atributos Declarao atributo obrigatório RA para o elemento ALUNO, cujo valor deve ser único no documento XML <!ATTLIST ALUNO RA ID #REQUIRED> No documento XML tem-se <ALUNO RA="89021-1">Fulano de Tal</ALUNO> <ALUNO RA="84317-9">Beltrano Disso</ALUNO> <ALUNO RA="89021-1">Fulano de Tal</ALUNO> <ALUNO RA=" 89021-1 ">Beltrano Disso</ALUNO>
  • 26.
    DTD - Atributos Declara o atributo obrigatório RA para o elemento NOTA que é uma referência a um identificador que existe no documento XML  No documento XML Aluno <!ATTLIST ALUNO RA ID #REQUIRED> <ALUNO RA="89021-1">Fulano de Tal</ALUNO> <ALUNO RA="84317-9">Beltrano Disso</ALUNO> No documento XML Nota <!ATTLIST NOTA cod IDREF #REQUIRED> <NOTA cod="89021-1">9,0</NOTA> <NOTA cod="84317-9">4,5</NOTA>
  • 27.
    DTD - Atributos Exemplosde atributos: <!ATTLIST pessoa genero CDATA “masculino"> <!ATTLIST pessoa genero CDATA #FIXED "masculino"> <!ATTLIST pessoa genero CDATA #REQUIRED> <!ATTLIST pessoa genero CDATA #IMPLIED> <!ATTLIST pessoa genero (masculino|feminino) "masculino">
  • 28.
    DTD - Entidades Entidadesservem para Substituição automática de conteúdo Referência a documentos externos Controlar parâmetros em documentos DTD Processamento condicional
  • 29.
    DTD - Entidades <!ENTITYnome frase> Declara entidades Globais De parâmetro nome é a identificação única da entidade frase é o conteúdo
  • 30.
    DTD - Entidades <!ENTITYpersonagem “Mickey Mouse"> Quando a entidade &personagem; aparecer em um documento XML, ela será substituída por "Mickey Mouse". <NOME>&personagem</NOME> <NOME>Mickey Mouse</NOME>
  • 31.
    DTD - Entidades <!ENTITYresumo SYSTEM "http://www.unaes.br/resumo.xml"> A declaração acima substitui a referência &resumo; pelo conteúdo de http://www.unaes.br/resumo.xml
  • 32.
    DTD - Entidades Entidadesde parâmetro atuam apenas dentro de DTDs e não podem ser processadas em documentos XML Esse tipo de entidade é declarada da seguinte forma: <!ENTITY % nome "tipo"> nome identifica a entidade tipo pode ser o tipo de atibutos ou uma lista de elementos
  • 33.
    DTD - Entidades <!ENTITY% string "CDATA"> <!ENTITY % chave "ID"> <!ENTITY % lista "MEMORIA, VELOCIDADE"> <!ELEMENT MICROCOMPUTADOR ANY> <!ELEMENT MICRO (lista)> <!ATTLIST MICRO codigo %chave; #REQUIRED> <!ELEMENT MEMORIA (#PCDATA)> <!ATTLIST MEMORIA tipo %string; #REQUIRED> <!ELEMENT VELOCIDADE (#PCDATA)>