D O C U M E N T T Y P E D E F I N I T I O N
DTD
Objectivos
 O DTD define a estrutura do documento
 Com o DTD as aplicações podem verificar se os
documentos estão correctos.
Declarações
 Um DTD é constituído por um conjunto de
declarações:
 ELEMENT para anotações de elementos
 ATTLIST definição de atributos
 ENTITY definição de entidades
 NOTATION definição de dados e formatos
 PCDATA
 CDATA
Declarações
 Elementos
 Elementos são os principais blocos.
 Atributos
 Atributos fornecem informação adicional sobre elementos.
Atributos são sempre colocados entre aspas. Por exemplo <img
src="computer.gif" />
Declarações
 Entidades
 Alguns caracteres por terem significado especial e precisam de
uma forma especial de representação, como por exemplo o
carácter "&nbsp;" que representa "no-breaking-space" no
HTML.
 &lt; < less than(menor do que)
 &gt; > greater than(maior do que)
 &amp; & ampersand
 &apos; ' apostrophe(apóstrofe)
 &quot; " quotation mark(aspas)
Declarações
 PCDATA
 PCDATA significa Parsed Character DATA.
 Entenda “Character Data” como o texto compreendido entre as
“tags” de um elemento.
 No PCDATA o texto será analisado sintacticamente e se houver
entidades estas serão expandidas. As “tags” dentro do texto, se
houver, serão processadas
 CDATA
 CDATA significa Character DATA. No CDATA o texto não
será analisado sintacticamente.
Declarações
 ( ... ) Delimita o grupo
 A Deve ter A somente
 A+ Deve ter 1 ou mais A
 A? Deve ter ZERO ou UM A
 A* Pode ter ZERO ou mais A
 +(A) Pode ter A
 -(A) Não deve ter A
 A | B Pode ter um ou outro
 A , B Deve ter um e outro e a ordem é importante
 A & B Ambos devem existir, e a ordem não é
importante
Elementos
 A declaração ELEMENT serve para declarar
elementos, com a seguinte sintaxe:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
 Elementos vazios
 Elementos vazios são declarados com a palavra reservada
EMPTY:
<!ELEMENT element-name EMPTY>
Ex: <!ELEMENT br EMPTY>
Elementos
 Elementos com PCDATA
 Elementos com apenas dados que serão analisados são
declarados com o parâmetro #PCDATA dentro do parenteses:
<!ELEMENT element-name (#PCDATA)>
 Elementos com conteúdo
 Elementos declarados com a palavra reservada ANY, poderá
conter qualquer combinação de dados.
<!ELEMENT element-name ANY>
Elementos
 Elementos com filhos (sequências)
 Elementos com um ou mais filhos são declarados com o nome
dos elementos filhos.
<!ELEMENT element-name (child1)>
ou
<!ELEMENT element-name (child1,child2,...)>
Elementos
 Declarando apenas uma ocorrência de um elemento
<!ELEMENT element-name (child-name)>
 Declarando pelo menos uma ocorrência do elemento.
<!ELEMENT element-name (child-name+)>
 Declarando zero ou mais ocorrências de um
Elemento
<!ELEMENT element-name (child-name*)>
 Declarando zero ou uma ocorrências de um
Elemento
<!ELEMENT element-name (child-name?)>
Declarando um ou outro conteúdo
<!ELEMENT element-name (child-name-1 | child-name-2)>
Elementos
 O elemento A tem zero ou mais elementos B seguidos de
um único elemento C:
<!ELEMENT A (B* , C)>
 O elemento A tem um ou mais elementos B seguidos de
um único elemento C:
<!ELEMENT A (B+ , C)>
 O elemento A tem o elemento A opcional:
<!ELEMENT A (A? , B)>
 O elemento A pode conter qualquer combinação de texto
e do elemento B
<!ELEMENT A (#PCDATA | B )*>
Elementos
 Outras formas de declarar os elementos que se
encontra em várias especificações:
<!ELEMENT element-name - - (element-child)+>
 O elemento-name deve ser uma tag de início <element.name>
e uma tag de fecho </element-name>
<!ELEMENT element-name – O EMPTY>
 O elemento-name deve ser uma tag de início <element.name>
e tag de fecho </element-name> é opcional.
 Com a palavra-chave EMPTY reforça a ideia que o bloco não
teve ter conteúdo!
Atributos
 Servem para atribuir pares nome-valor com elementos.
 Atributos só podem aparecer em etiquetas de início e em
etiquetas vazias.
 A declaração de atributos inicia com o nome ATTLIST,
seguido do nome do elemento e da lista de seus atributos.
<!ATTLIST element-name attribute-name attribute-type
default-value>
 DTD Exemplo:
<!ATTLIST A type CDATA "check">
 XML Exemplo:
<A type="check" />
Atributos
 O tipo do atributo pode ser:
 CDATA O valor é “character data”
 (en1|en2|..) O valor deve ser de uma lista enumerada
 ID O valor é um único “id”
 IDREF O valor é o id de um outro elemento
 IDREFS O valor é uma lista de outros “ids”
 NMTOKEN O valor é um nome válido
 NMTOKENS O valor é uma lista de nomes válidos
 ENTITY O valor é uma entidade
 Entidades O valor é uma lista de Entidades
 NOTATION O valor é o nome de uma “notation”
Atributos
 O default-value pode ser um dos seguintes:
 value O valor default do atributo
 #REQUIRED O atributo é obrigatório
 #IMPLIED O atributo é não obrigatório
 #FIXED value O valor do atributo é fixo
 EX:
<!ELEMENT A EMPTY>
<!ATTLIST A width CDATA "0">
<A width="100" />
No exemplo acima, o elemento “A" é definido para ser um
elemento vazio com um atributo "width”. Se nenhum
“width” for definido o seu valor default será “0”.
Atributos
<!ELEMENT A(#PCDATA)>
<!ATTLIST attributes
aaa CDATA #REQUIRED
bbb CDATA #IMPLIED>
 A ordem dos atributos não importa
 Atributos CDATA: permite qualquer caracter de acordo
com as regras de boa formação
 #REQUIRED: obrigatório
 #IMPLIED: Opcional
Atributos
 #REQUIRED
 O #REQUIRED é usado se não há um valor default a ser
definido e deseja-se forçar a presença do atributo.
<!ATTLIST element-name attribute-name attribute-
type #REQUIRED>
 Exemplo:
<!ATTLIST person number CDATA #REQUIRED>
 Valido: <person number="5677" />
 Invalido: <person />
Atributos
 #FIXED
 Usar #FIXED quando o atributo deve ter valores fixado que
não pode ser mudados pelo autor
<!ATTLIST element-name attribute-name attribute-
type #FIXED "value">
 Exemplo
<!ATTLIST sender company CDATA #FIXED
"Microsoft">
 Válido : <sender company="Microsoft" />
 Inválido: <sender company="IBM" />
Atributos
 #IMPLIED
 Usar #IMPLIED quando não se deseja forçar a existência do
atributo e não tem um valor default definido.
<!ATTLIST element-name attribute-name attribute-
type #IMPLIED>
 Exemplo
<!ATTLIST contact fax CDATA #IMPLIED>
 Valido: <contact fax="555-667788" />
 Valido: <contact />
Atributos
 Enumerated Attribute Values
 Usar “enumerated attribute” quando é desejado que o atributo
seja um entre vários valores definidos.
<!ATTLIST element-name attribute-name (en1|en2|..)
default-value>
 Exemplo:
<!ATTLIST payment type (check|cash) "cash">
<payment type="check" />
<payment type="cash" />
Atributos
 NMTOKEN: letras, dígitos, ponto [ . ] , hífen [ - ], underline [ _ ] dois
pontos [ : ] .
 NMTOKENS: NMTOKEN mais o espaço em branco: um ou mais
espaços em branco, return, fim de linha e tabulações.
<!ELEMENT attributes (#PCDATA)>
<!ATTLIST attributes
aaa CDATA #IMPLIED
bbb NMTOKEN #REQUIRED
ccc NMTOKENS #REQUIRED>
Atributos
 Tipo ID
 Um atributo do tipo ID pode conter apenas caracteres permitidos pelo tipo NMTOKEN e devem
iniciar por uma letra.
 Nenhum tipo de elemento deve conter mais de um atributo do tipo ID
 O valor de um atributo do tipo ID deve ser único dentre todos atributos ID das instâncias do
elemento.
<!ELEMENT X(A+ , B+ , C+)>
<!ELEMENT A (#PCDATA)>
<!ELEMENT B (#PCDATA)>
<!ELEMENT C (#PCDATA)>
<!ATTLIST A
id ID #REQUIRED>
<!ATTLIST B
code ID #IMPLIED
list NMTOKEN #IMPLIED>
<!ATTLIST C
X ID #REQUIRED
Y NMTOKEN #IMPLIED>
Atributos
 IDREF
 Um atributo IDREF deve referencia algum ID existente no documento. IDREFS referencia um
sequência de Ids
<!ELEMENT X (A+ , B+, C+, D+)>
<!ELEMENT A (#PCDATA)>
<!ELEMENT B (#PCDATA)>
<!ELEMENT C (#PCDATA)>
<!ELEMENT D (#PCDATA)>
<!ATTLIST A
mark ID #REQUIRED>
<!ATTLIST B
id ID #REQUIRED>
<!ATTLIST C
ref IDREF #REQUIRED>
<!ATTLIST D
ref IDREFS #REQUIRED>
Atributos
<X>
<A mark="a1"/>
<A mark="a2"/>
<A mark="a3"/>
<B id="b001" />
<C ref="a3" />
<D ref="a1 b001 a2" />
</X>
Atributos
 Especificando valores de atributo permitidos
<!ELEMENT X(A+, B+)>
<!ELEMENT A (#PCDATA)>
<!ELEMENT B (#PCDATA)>
<!ATTLIST A
true ( yes | no ) #REQUIRED>
<!ATTLIST B
month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED>
Atributos
 Valores permitidos
<X>
<A true="yes"/>
<A true="no"/>
<A true="yes"/>
<B month="8" />
<B month="2" />
<B month="12" />
</X>
 Valores default
<!ATTLIST A
true ( yes | no ) "yes">
Atributos
 Elemento só com atributos, sem texto (Vazio)
<!ELEMENT A EMPTY>
Exemplo:
<X>
<A true="yes"/>
<A true="no"></A>
</X>
Entidades
 Entidades são variáveis usadas para definir atalhos
para textos padrão ou caracteres especiais.
 “Entity references” são referências a Entidades.
 Entidades podem ser declaradas internamente ou
externamente ou parametrizadas.
 Nota: Uma entidade possui três partes: o
ampersand (&), o nome e um ponto
vírgula(;).
Entidades
 Entidades Declaradas Internamente
<!ENTITY entity-name "entity-value">
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
<author>&writer;&copyright;</author>
 Entidades Declaradas Externamente
<!ENTITY entity-name SYSTEM "URI/URL">
<!ENTITY writer SYSTEM "http://www.w3schools.com/Entidades.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/Entidades.dtd">
<author>&writer;&copyright;</author>
Entidades
 Entidades parametrizadas
 As entidades de parâmetro ou parametrizadas são válidas
somente em DTDs, funcionam como abreviaturas de
declarações e são declaradas na DTD por meio do símbolo %
precedido ao nome da entidade.
 Por exemplo:
<!ENTITY % livro “(titulo, autor, editora, preco)”>
<!ELEMENT exemplo %livro;>
 Esse exemplo determina que um elemento livro pode ter somente
filhos do tipo titulo, autor, editora e preço.
Notações
 Descrevem o formato dos objectos de dados
 São normalmente usadas para descrever o formato dos objectos
binários, como arquivos gráficos
 Mecanismo para associar entidades unparsed ou não analisáveis
com a ferramenta apropriada
 Em caso de uma imagem, pode ser um visualizador
<!NOTATION GIF89a PUBLIC
“-/CompuServe//NOTATION Graphics Interchange Format 89a//EN”
“c:windowskodakprv.exe”>
 Pode-se usar associações de arquivos
<!NOTATION GIF89a SYSTEM “GIF”>
<!NOTATION GIF89a SYSTEM “image/gif”>

Document Type Definition

  • 1.
    D O CU M E N T T Y P E D E F I N I T I O N DTD
  • 2.
    Objectivos  O DTDdefine a estrutura do documento  Com o DTD as aplicações podem verificar se os documentos estão correctos.
  • 3.
    Declarações  Um DTDé constituído por um conjunto de declarações:  ELEMENT para anotações de elementos  ATTLIST definição de atributos  ENTITY definição de entidades  NOTATION definição de dados e formatos  PCDATA  CDATA
  • 4.
    Declarações  Elementos  Elementossão os principais blocos.  Atributos  Atributos fornecem informação adicional sobre elementos. Atributos são sempre colocados entre aspas. Por exemplo <img src="computer.gif" />
  • 5.
    Declarações  Entidades  Algunscaracteres por terem significado especial e precisam de uma forma especial de representação, como por exemplo o carácter "&nbsp;" que representa "no-breaking-space" no HTML.  &lt; < less than(menor do que)  &gt; > greater than(maior do que)  &amp; & ampersand  &apos; ' apostrophe(apóstrofe)  &quot; " quotation mark(aspas)
  • 6.
    Declarações  PCDATA  PCDATAsignifica Parsed Character DATA.  Entenda “Character Data” como o texto compreendido entre as “tags” de um elemento.  No PCDATA o texto será analisado sintacticamente e se houver entidades estas serão expandidas. As “tags” dentro do texto, se houver, serão processadas  CDATA  CDATA significa Character DATA. No CDATA o texto não será analisado sintacticamente.
  • 7.
    Declarações  ( ...) Delimita o grupo  A Deve ter A somente  A+ Deve ter 1 ou mais A  A? Deve ter ZERO ou UM A  A* Pode ter ZERO ou mais A  +(A) Pode ter A  -(A) Não deve ter A  A | B Pode ter um ou outro  A , B Deve ter um e outro e a ordem é importante  A & B Ambos devem existir, e a ordem não é importante
  • 8.
    Elementos  A declaraçãoELEMENT serve para declarar elementos, com a seguinte sintaxe: <!ELEMENT element-name category> or <!ELEMENT element-name (element-content)>  Elementos vazios  Elementos vazios são declarados com a palavra reservada EMPTY: <!ELEMENT element-name EMPTY> Ex: <!ELEMENT br EMPTY>
  • 9.
    Elementos  Elementos comPCDATA  Elementos com apenas dados que serão analisados são declarados com o parâmetro #PCDATA dentro do parenteses: <!ELEMENT element-name (#PCDATA)>  Elementos com conteúdo  Elementos declarados com a palavra reservada ANY, poderá conter qualquer combinação de dados. <!ELEMENT element-name ANY>
  • 10.
    Elementos  Elementos comfilhos (sequências)  Elementos com um ou mais filhos são declarados com o nome dos elementos filhos. <!ELEMENT element-name (child1)> ou <!ELEMENT element-name (child1,child2,...)>
  • 11.
    Elementos  Declarando apenasuma ocorrência de um elemento <!ELEMENT element-name (child-name)>  Declarando pelo menos uma ocorrência do elemento. <!ELEMENT element-name (child-name+)>  Declarando zero ou mais ocorrências de um Elemento <!ELEMENT element-name (child-name*)>  Declarando zero ou uma ocorrências de um Elemento <!ELEMENT element-name (child-name?)> Declarando um ou outro conteúdo <!ELEMENT element-name (child-name-1 | child-name-2)>
  • 12.
    Elementos  O elementoA tem zero ou mais elementos B seguidos de um único elemento C: <!ELEMENT A (B* , C)>  O elemento A tem um ou mais elementos B seguidos de um único elemento C: <!ELEMENT A (B+ , C)>  O elemento A tem o elemento A opcional: <!ELEMENT A (A? , B)>  O elemento A pode conter qualquer combinação de texto e do elemento B <!ELEMENT A (#PCDATA | B )*>
  • 13.
    Elementos  Outras formasde declarar os elementos que se encontra em várias especificações: <!ELEMENT element-name - - (element-child)+>  O elemento-name deve ser uma tag de início <element.name> e uma tag de fecho </element-name> <!ELEMENT element-name – O EMPTY>  O elemento-name deve ser uma tag de início <element.name> e tag de fecho </element-name> é opcional.  Com a palavra-chave EMPTY reforça a ideia que o bloco não teve ter conteúdo!
  • 14.
    Atributos  Servem paraatribuir pares nome-valor com elementos.  Atributos só podem aparecer em etiquetas de início e em etiquetas vazias.  A declaração de atributos inicia com o nome ATTLIST, seguido do nome do elemento e da lista de seus atributos. <!ATTLIST element-name attribute-name attribute-type default-value>  DTD Exemplo: <!ATTLIST A type CDATA "check">  XML Exemplo: <A type="check" />
  • 15.
    Atributos  O tipodo atributo pode ser:  CDATA O valor é “character data”  (en1|en2|..) O valor deve ser de uma lista enumerada  ID O valor é um único “id”  IDREF O valor é o id de um outro elemento  IDREFS O valor é uma lista de outros “ids”  NMTOKEN O valor é um nome válido  NMTOKENS O valor é uma lista de nomes válidos  ENTITY O valor é uma entidade  Entidades O valor é uma lista de Entidades  NOTATION O valor é o nome de uma “notation”
  • 16.
    Atributos  O default-valuepode ser um dos seguintes:  value O valor default do atributo  #REQUIRED O atributo é obrigatório  #IMPLIED O atributo é não obrigatório  #FIXED value O valor do atributo é fixo  EX: <!ELEMENT A EMPTY> <!ATTLIST A width CDATA "0"> <A width="100" /> No exemplo acima, o elemento “A" é definido para ser um elemento vazio com um atributo "width”. Se nenhum “width” for definido o seu valor default será “0”.
  • 17.
    Atributos <!ELEMENT A(#PCDATA)> <!ATTLIST attributes aaaCDATA #REQUIRED bbb CDATA #IMPLIED>  A ordem dos atributos não importa  Atributos CDATA: permite qualquer caracter de acordo com as regras de boa formação  #REQUIRED: obrigatório  #IMPLIED: Opcional
  • 18.
    Atributos  #REQUIRED  O#REQUIRED é usado se não há um valor default a ser definido e deseja-se forçar a presença do atributo. <!ATTLIST element-name attribute-name attribute- type #REQUIRED>  Exemplo: <!ATTLIST person number CDATA #REQUIRED>  Valido: <person number="5677" />  Invalido: <person />
  • 19.
    Atributos  #FIXED  Usar#FIXED quando o atributo deve ter valores fixado que não pode ser mudados pelo autor <!ATTLIST element-name attribute-name attribute- type #FIXED "value">  Exemplo <!ATTLIST sender company CDATA #FIXED "Microsoft">  Válido : <sender company="Microsoft" />  Inválido: <sender company="IBM" />
  • 20.
    Atributos  #IMPLIED  Usar#IMPLIED quando não se deseja forçar a existência do atributo e não tem um valor default definido. <!ATTLIST element-name attribute-name attribute- type #IMPLIED>  Exemplo <!ATTLIST contact fax CDATA #IMPLIED>  Valido: <contact fax="555-667788" />  Valido: <contact />
  • 21.
    Atributos  Enumerated AttributeValues  Usar “enumerated attribute” quando é desejado que o atributo seja um entre vários valores definidos. <!ATTLIST element-name attribute-name (en1|en2|..) default-value>  Exemplo: <!ATTLIST payment type (check|cash) "cash"> <payment type="check" /> <payment type="cash" />
  • 22.
    Atributos  NMTOKEN: letras,dígitos, ponto [ . ] , hífen [ - ], underline [ _ ] dois pontos [ : ] .  NMTOKENS: NMTOKEN mais o espaço em branco: um ou mais espaços em branco, return, fim de linha e tabulações. <!ELEMENT attributes (#PCDATA)> <!ATTLIST attributes aaa CDATA #IMPLIED bbb NMTOKEN #REQUIRED ccc NMTOKENS #REQUIRED>
  • 23.
    Atributos  Tipo ID Um atributo do tipo ID pode conter apenas caracteres permitidos pelo tipo NMTOKEN e devem iniciar por uma letra.  Nenhum tipo de elemento deve conter mais de um atributo do tipo ID  O valor de um atributo do tipo ID deve ser único dentre todos atributos ID das instâncias do elemento. <!ELEMENT X(A+ , B+ , C+)> <!ELEMENT A (#PCDATA)> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> <!ATTLIST A id ID #REQUIRED> <!ATTLIST B code ID #IMPLIED list NMTOKEN #IMPLIED> <!ATTLIST C X ID #REQUIRED Y NMTOKEN #IMPLIED>
  • 24.
    Atributos  IDREF  Umatributo IDREF deve referencia algum ID existente no documento. IDREFS referencia um sequência de Ids <!ELEMENT X (A+ , B+, C+, D+)> <!ELEMENT A (#PCDATA)> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> <!ELEMENT D (#PCDATA)> <!ATTLIST A mark ID #REQUIRED> <!ATTLIST B id ID #REQUIRED> <!ATTLIST C ref IDREF #REQUIRED> <!ATTLIST D ref IDREFS #REQUIRED>
  • 25.
    Atributos <X> <A mark="a1"/> <A mark="a2"/> <Amark="a3"/> <B id="b001" /> <C ref="a3" /> <D ref="a1 b001 a2" /> </X>
  • 26.
    Atributos  Especificando valoresde atributo permitidos <!ELEMENT X(A+, B+)> <!ELEMENT A (#PCDATA)> <!ELEMENT B (#PCDATA)> <!ATTLIST A true ( yes | no ) #REQUIRED> <!ATTLIST B month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED>
  • 27.
    Atributos  Valores permitidos <X> <Atrue="yes"/> <A true="no"/> <A true="yes"/> <B month="8" /> <B month="2" /> <B month="12" /> </X>  Valores default <!ATTLIST A true ( yes | no ) "yes">
  • 28.
    Atributos  Elemento sócom atributos, sem texto (Vazio) <!ELEMENT A EMPTY> Exemplo: <X> <A true="yes"/> <A true="no"></A> </X>
  • 29.
    Entidades  Entidades sãovariáveis usadas para definir atalhos para textos padrão ou caracteres especiais.  “Entity references” são referências a Entidades.  Entidades podem ser declaradas internamente ou externamente ou parametrizadas.  Nota: Uma entidade possui três partes: o ampersand (&), o nome e um ponto vírgula(;).
  • 30.
    Entidades  Entidades DeclaradasInternamente <!ENTITY entity-name "entity-value"> <!ENTITY writer "Donald Duck."> <!ENTITY copyright "Copyright W3Schools."> <author>&writer;&copyright;</author>  Entidades Declaradas Externamente <!ENTITY entity-name SYSTEM "URI/URL"> <!ENTITY writer SYSTEM "http://www.w3schools.com/Entidades.dtd"> <!ENTITY copyright SYSTEM "http://www.w3schools.com/Entidades.dtd"> <author>&writer;&copyright;</author>
  • 31.
    Entidades  Entidades parametrizadas As entidades de parâmetro ou parametrizadas são válidas somente em DTDs, funcionam como abreviaturas de declarações e são declaradas na DTD por meio do símbolo % precedido ao nome da entidade.  Por exemplo: <!ENTITY % livro “(titulo, autor, editora, preco)”> <!ELEMENT exemplo %livro;>  Esse exemplo determina que um elemento livro pode ter somente filhos do tipo titulo, autor, editora e preço.
  • 32.
    Notações  Descrevem oformato dos objectos de dados  São normalmente usadas para descrever o formato dos objectos binários, como arquivos gráficos  Mecanismo para associar entidades unparsed ou não analisáveis com a ferramenta apropriada  Em caso de uma imagem, pode ser um visualizador <!NOTATION GIF89a PUBLIC “-/CompuServe//NOTATION Graphics Interchange Format 89a//EN” “c:windowskodakprv.exe”>  Pode-se usar associações de arquivos <!NOTATION GIF89a SYSTEM “GIF”> <!NOTATION GIF89a SYSTEM “image/gif”>