Download - Dtd
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 " " que representa "no-breaking-space" no HTML. < < less than(menor do que) > > greater than(maior do que) & & ampersand ' ' apostrophe(apóstrofe) " " 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 #REQUIREDbbb 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 #IMPLIEDbbb NMTOKEN #REQUIREDccc 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 #IMPLIEDlist NMTOKEN #IMPLIED>
<!ATTLIST C X ID #REQUIREDY 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;©right;</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;©right;</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:\windows\kodakprv.exe”>
Pode-se usar associações de arquivos
<!NOTATION GIF89a SYSTEM “GIF”><!NOTATION GIF89a SYSTEM “image/gif”>