Seção 3: Autores

Q 3.10: O que é uma DTD e onde consigo uma?

Uma especificação de estrutura de documento. Você pode escrevê-las ou baixá-las.

Uma DTD é uma descrição na sintaxe da Declaração XML de um tipo ou classe de documento específico. Ele define quais nomes devem ser usados ​​para os diferentes tipos de elemento, onde eles podem ocorrer, e como eles se encaixam. Um Schema faz a mesma coisa na sintaxe do documento XML, para que possa ser lido como um documento XML em si; E Schemas permitem digitação de dados mais extensa.

Por exemplo, se desejar que um tipo de documento seja capaz de descrever listas que contenham itens, a parte relevante da DTD pode conter algo como isto:


<!ELEMENT List (Item)+> 
<!ELEMENT Item (#PCDATA)> 
    

Isso define uma lista como um tipo de elemento contendo um ou mais itens (esse é o sinal de mais); E define itens como tipos de elementos contendo apenas texto simples (Parsed Character Data ou PCDATA). Os validadores lêem a DTD antes de ler seu documento para que eles possam identificar onde cada tipo de elemento deve vir, o que eles podem conter e como cada um se relaciona com o outro, para que aplicativos que precisem conhecer isso antecipadamente (processadores, navegadores, Editores, motores de busca, navegadores e bancos de dados) podem se configurar corretamente. O exemplo acima permite criar listas como esta:

    <List>
  <Item>Chocolate</Item>
  <Item>Music</Item>
  <Item>Surfing</Item>
</List> 
    

Como explicado em Como o XML manipula o espaço em branco em meus documentos? , o recuo no exemplo é apenas para legibilidade durante a edição: não é exigido pelo XML. Poderia ser tão facilmente escrito assim:

    <List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List>
    

Por conseguinte, uma DTD fornece aos aplicativos um aviso prévio de quais nomes e estruturas podem ser usados ​​em um determinado tipo de documento. Usar um DTD e um editor de validação significa que você pode ter certeza de que todos os documentos desse tipo específico serão construídos e nomeados de forma consistente e conforme.

DTDs não são necessários para processar documentos bem formados , mas são necessários se você quiser aproveitar os tipos de atributos especiais do XML, como o mecanismo de referência cruzada ID / IDREF incorporado; Ou o uso de valores de atributos padrão; Ou referências a arquivos externos não-XML ('Notations') como imagens; Ou se você quiser simplesmente verificar a validade do documento antes do processamento.

Existem milhares de DTD já existentes em todos os tipos de áreas (consulte as Páginas de capa SGML/XML para ponteiros Muitos deles podem ser baixados e usados ​​livremente, mas alguns são restritos a certas indústrias, ou são proprietários; Mas você também pode escrever o seu próprio (veja a questão na criação de seu próprio DTD . Os DTDs SGML antigos precisam ser convertidos em XML para uso com sistemas XML: leia a questão sobre a conversão de DTDs SGML em XML ; mas as DTDs SGML mais populares já estão disponíveis Em formato XML.

Alguns editores XML usam um formato compilado binário de DTD produzido por suas próprias rotinas de gerenciamento para permitir que uma única pessoa em uma organização seja responsável por modificações e distribuir apenas uma versão não modificada (compilada em binários) para usuários.

As alternativas a uma DTD são várias formas de Schema . Estes fornecem recursos de validação mais extensivos do que DTDs, incluindo a validação de conteúdo de dados de caracteres.