AeroPlanos

Aero

Aero

S.O.S. DTD

DTD - Document Type Definition

Introdução

Document Type Definition tem como objectivo a definição de blocos de um documento XML de forma bem estruturada. Define a estrutura de documentos com uma lista dos seus elementos.

Utilizando DTD, pode-se incluir nos ficheiros XML, uma descrição do seu próprio formato.

Utilizando DTD, possibila-se que vários grupos de pessoas utilizem as mesmas definições tipo dos documentos, no intercâmbio de dados.

DTD pode ser usado para verificar se os dados recebidos são válidos, bem como fazer a validação dos nossos próprios dados.

DOCTYPE

Segundo os standards de HTML, definidos por W3C, cada documento necessita que seja declarado qual é o seu tipo, "document type declaration".

Se queremos um standard, então devemos seguir as suas regras.

Este mesmo document, principia com a declaração de que se trata de um documento:

— "HTML 4.01 Transitional"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
...

Em HTML 4.01 existem mais dois tipos de documentos:

— "HTML 4.01 Strict"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

— "HTML 4.01 Frameset"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Documento DTD

Em XML, ao contário de HTML, as "markup tags" não se encontram previamente definidas. Por essa razão é fundamental definir os elementos que constituem um ficheiro deste tipo, para que possam ser interpretados correctamente por qualquer programa.

Retomemos o exemplo do capítulo sobre XML, introduzindo o necessário DOCTYPE.

— "Planes1.xml"

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Planes [
<!ELEMENT Planes (Aviao+)>
<!ELEMENT Aviao (imagem,Modelo,VNE,Stall,Takeoff,Landing)>
<!ELEMENT imagem (#PCDATA)>
<!ELEMENT Modelo (#PCDATA)>
<!ELEMENT VNE (#PCDATA)>
<!ELEMENT Stall (#PCDATA)>
<!ELEMENT Takeoff (#PCDATA)>
<!ELEMENT Landing (#PCDATA)>
<!ATTLIST imagem name CDATA "src">
]>
<Planes>
  <Aviao>
    <imagem name="src">imgs/cs-xao.jpg</imagem>
    <Modelo>Van's RV-6</Modelo>
    <VNE>210</VNE>
    <Stall>49</Stall>
    <Takeoff>270</Takeoff>
    <Landing>300</Landing>
  </Aviao>
</Planes>

Em alternativa podemos fazê-lo de outra maneira. Criando um ficheiro.dtd contendo as definições dos elementos:

— "Planes.dtd"

<!ELEMENT Planes (Aviao+)>
<!ELEMENT Aviao (imagem,Modelo,VNE,Stall,Takeoff,Landing)>
<!ELEMENT imagem (#PCDATA)>
<!ELEMENT Modelo (#PCDATA)>
<!ELEMENT VNE (#PCDATA)>
<!ELEMENT Stall (#PCDATA)>
<!ELEMENT Takeoff (#PCDATA)>
<!ELEMENT Landing (#PCDATA)>

<!ATTLIST imagem name CDATA "src">

Desta forma, outros documentos XML, poderão partilhar uma mesma estrutura, referenciando este documento DTD.

— "Planes2.xml"

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Planes SYSTEM "Planes.dtd">
<Planes>
  <Aviao>
    <imagem name="src">imgs/cs-xao.jpg</imagem>
    <Modelo>Van's RV-6</Modelo>
    <VNE>210</VNE>
    <Stall>49</Stall>
    <Takeoff>270</Takeoff>
    <Landing>300</Landing>
  </Aviao>
  <Aviao>
    <imagem name="src">imgs/cs-xai.jpg</imagem>
    <Modelo>Pietenpol Aircamper</Modelo>
    <VNE>105</VNE>
    <Stall>40</Stall>
    <Takeoff>400</Takeoff>
    <Landing>300</Landing>
  </Aviao>
</Planes>

Utilizando esta técnica podem-se alterar as definições dos Web standards geralmente utilizados em HTML, criando um "custom DTD".

Custom DTD

...