DTD - Sintaxe

Um XML DTD pode ser especificado dentro do documento ou pode ser mantido em um documento separado e, em seguida, o documento pode ser vinculado ao documento DTD para usá-lo.

Sintaxe

A sintaxe básica de um DTD é a seguinte -

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

Na sintaxe acima -

  • DTD começa com o delimitador <! DOCTYPE.

  • A element diz ao analisador para analisar o documento do elemento raiz especificado.

  • DTD identifieré um identificador para a definição do tipo de documento, que pode ser o caminho para um arquivo no sistema ou URL para um arquivo na Internet. Se o DTD está apontando para um caminho externo, é chamadoexternal subset.

  • o square brackets [ ] inclua uma lista opcional de declarações de entidade chamadas internal subset.

DTD interno

Um DTD é referido como um DTD interno se os elementos forem declarados nos arquivos XML. Para referenciá-lo como DTD interno, o atributo autônomo na declaração XML deve ser definido comoyes. Isso significa que a declaração funciona independentemente da fonte externa.

Sintaxe

A sintaxe do DTD interno é mostrada -

<!DOCTYPE root-element [element-declarations]>

onde root-element é o nome do elemento-raiz e element-declarations é onde você declara os elementos.

Exemplo

A seguir está um exemplo simples de DTD interno -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>

<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Vamos examinar o código acima -

Start Declaration - Comece a declaração XML com a seguinte instrução.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

DTD- Imediatamente após o cabeçalho XML, segue-se a declaração do tipo de documento , comumente referido como DOCTYPE -

<!DOCTYPE address [

A declaração DOCTYPE possui um ponto de exclamação (!) No início do nome do elemento. O DOCTYPE informa ao analisador que um DTD está associado a este documento XML.

DTD Body - A declaração DOCTYPE é seguida pelo corpo do DTD, onde você declara elementos, atributos, entidades e notações -

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

Vários elementos são declarados aqui que compõem o vocabulário do documento <nome>. <! ELEMENT name (#PCDATA)> define o nome do elemento como sendo do tipo "#PCDATA". Aqui, #PCDATA significa dados de texto analisáveis.

End Declaration- Finalmente, a seção de declaração do DTD é fechada usando um colchete de fechamento e um colchete de fechamento angular (]>). Isso efetivamente encerra a definição e, a partir daí, o documento XML segue imediatamente.

Regras

  • A declaração do tipo de documento deve aparecer no início do documento (precedida apenas pelo cabeçalho XML) - não é permitida em nenhum outro local do documento.

  • Semelhante à declaração DOCTYPE, as declarações do elemento devem começar com um ponto de exclamação.

  • O Nome na declaração do tipo de documento deve corresponder ao tipo de elemento do elemento raiz.

DTD externo

No DTD externo, os elementos são declarados fora do arquivo XML. Eles são acessados ​​especificando os atributos do sistema que podem ser o arquivo .dtd legal ou um URL válido. Para referenciá-lo como DTD externo, o atributo autônomo na declaração XML deve ser definido comono. Isso significa que a declaração inclui informações da fonte externa.

Sintaxe

A seguir está a sintaxe para DTD externo -

<!DOCTYPE root-element SYSTEM "file-name">

onde nome do arquivo é o arquivo com extensão .dtd .

Exemplo

O exemplo a seguir mostra o uso externo de DTD -

<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">

<address>
  <name>Tanmay Patil</name>
  <company>TutorialsPoint</company>
  <phone>(011) 123-4567</phone>
</address>

O conteúdo do arquivo DTD address.dtd são como mostrado -

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Tipos

Você pode se referir a um DTD externo usando system identifiers ou public identifiers.

System Identifiers

Um identificador de sistema permite que você especifique a localização de um arquivo externo contendo declarações DTD. A sintaxe é a seguinte -

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Como você pode ver, ele contém a palavra-chave SYSTEM e uma referência de URI apontando para a localização do documento.

Public Identifiers

Os identificadores públicos fornecem um mecanismo para localizar recursos DTD e são escritos conforme abaixo -

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Como você pode ver, ele começa com a palavra-chave PUBLIC, seguida por um identificador especializado. Identificadores públicos são usados ​​para identificar uma entrada em um catálogo. Os identificadores públicos podem seguir qualquer formato, no entanto, um formato comumente usado é chamado de Identificadores Públicos Formais ou FPIs.