Sistema de Bibliotecas UCS - Cantos do fim do século
Document Type Definition
1. D O C U M E N T T Y P E D E F I N I T I O N
DTD
2. Objectivos
O DTD define 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
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" />
5. Declarações
Entidades
Alguns caracteres por terem significado especial e precisam de
uma forma especial de representação, como por exemplo o
carácter " " que representa "no-breaking-space" no
HTML.
< < less than(menor do que)
> > greater than(maior do que)
& & ampersand
' ' apostrophe(apóstrofe)
" " quotation mark(aspas)
6. 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.
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çã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>
9. 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>
10. 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,...)>
11. 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)>
12. 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 )*>
13. 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!
14. 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" />
15. 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”
16. 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”.
17. 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
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 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" />
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
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>
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ã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(;).
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 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”>