DTD - Visão geral
A Declaração de Tipo de Documento XML, comumente conhecida como DTD, é uma maneira de descrever precisamente a linguagem XML. Os DTDs verificam a validade da estrutura e do vocabulário de um documento XML em relação às regras gramaticais da linguagem XML apropriada.
Um documento XML pode ser definido como -
Well-formed- Se o documento XML aderir a todas as regras XML gerais, como as tags, devem ser aninhadas corretamente, as tags de abertura e fechamento devem ser balanceadas e as tags vazias devem terminar com '/>', então ele é chamado de bem formado .
OU
Valid- Um documento XML considerado válido quando não está apenas bem formado , mas também está em conformidade com o DTD disponível que especifica quais tags ele usa, quais atributos essas tags podem conter e quais tags podem ocorrer dentro de outras tags, entre outras propriedades .
O diagrama a seguir representa que um DTD é usado para estruturar o documento XML -
Tipos
O DTD pode ser classificado com base em sua declaração no documento XML, como -
DTD interno
DTD externo
Quando um DTD é declarado dentro do arquivo, ele é chamado Internal DTD e se for declarado em um arquivo separado, é chamado External DTD.
Aprenderemos mais sobre isso no capítulo Sintaxe DTD
Características
A seguir estão alguns pontos importantes que um DTD descreve -
os elementos que podem aparecer em um documento XML.
a ordem em que podem aparecer.
elementos opcionais e obrigatórios.
atributos do elemento e se são opcionais ou obrigatórios.
se os atributos podem ter valores padrão.
Vantagens de usar DTD
Documentation- Você pode definir seu próprio formato para os arquivos XML. Olhando para este documento, um usuário / desenvolvedor pode entender a estrutura dos dados.
Validation - Permite verificar a validade dos arquivos XML, verificando se os elementos aparecem na ordem correta, se os elementos e atributos obrigatórios estão no lugar, se os elementos e atributos não foram inseridos de forma incorreta, etc.
Desvantagens de usar DTD
Ele não oferece suporte a namespaces. O namespace é um mecanismo pelo qual nomes de elementos e atributos podem ser atribuídos a grupos. No entanto, em um DTD, os namespaces devem ser definidos dentro do DTD, o que viola o propósito de usar os namespaces.
Ele suporta apenas o tipo de dados de string de texto.
Não é orientado a objetos. Conseqüentemente, o conceito de herança não pode ser aplicado aos DTDs.
Possibilidades limitadas de expressar a cardinalidade dos elementos.