3.3 A declaração DOCTYPE

O inicio de cada documento que você escrever deve especificar o nome do DTD o qual se aplica ao seu documento. Isto deve ser feito para que os interpretadores SGML possam determinar o DTD e assegurar que o documento esta em conformidade com o mesmo.

Esta informação é geralmente expressada em uma linha, na declaração DOCTYPE.

Uma declaração típica para um documento escrito para conformar-se com a versão 4.0 do DTD HTML se parece com esta:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">

Esta linha contém diferentes componentes.

<!

É o indicador que indica que se trata de uma declaração SGML. Esta linha está declarando o tipo do documento.

DOCTYPE

Mostra que esta é uma declaração SGML para o tipo de documento.

html

O nome do primeiro elemento o qual irá aparecer no documento

PUBLIC "-//W3C//DTD HTML 4.0//EN"

Lista o Identificador Público Formal (FPI) para o DTD ao qual este documento conforma-se. O seu interpretador SGML irá utiliza-lo para encontrar o DTD correto quando estiver processando o documento.

O PUBLIC não faz parte do FPI, ele indica para o processador SGML como localizar o DTD referenciado na FPI. Outras formas de informar ao interpretador SGML como localizar o DTD serão abordadas mais tarde .

>

Retorno ao documento.

3.3.1 Identificadores públicos formais (FPIs)

Nota: Você não precisa conhecê-los, mas eles são um background útil, e podem ajudá-lo a depurar problemas quando o seu processador SGML não puder localizar o DTD que você esta utilizando.

Os FPIs devem seguir uma sintaxe específica. Esta sintaxe é a seguinte:

"Proprietário//Palavra-Chave Descrição//Idioma"
Proprietário

Isto indica o proprietário da FPI.

Se este conjunto de caracteres começar com “ISO” significará que o FPI é de propriedade do ISO. Por exemplo, a FPI "ISO 8879:1986//ENTITIES Greek Symbols//EN" lista o ISO 8879:1986 como sendo o proprietário do conjunto de entidades dos símbolos Gregos. O ISO 8879:1986 é o numero da ISO para o padrão SGML.

De outra forma, este conjunto de caracteres irá se parecer com -// Proprietário ou +//Proprietário (Observe que a única diferença é a introdução do + ou do -).

Se o conjunto de caracteres começar com - significa que o proprietário da informação não é registrado, se começar com um + significa que ele é registrado.

O ISO 9070:1991 define como os nomes registrados são gerados; ele pode ser derivado do numero de uma publicação ISO, de um código ISBN, ou um código de organização atribuído de acordo com o ISO 6523. Além disso, uma autoridade de registro pode ser criada a fim de atribuir nomes registrados. O conselho ISO delegou isto ao American National Standards Institute (ANSI).

Como o Projeto FreeBSD não foi registrado o conjunto de caracteres de proprietário é -//FreeBSD. E como você pode ver, o W3C também não é um proprietário registrado.

Palavra-Chave

Existem diversas palavras-chave as quais indicam o tipo de informação no arquivo. Algumas das palavras chaves mais comuns são DTD, ELEMENT, ENTITIES, e TEXT. A palavra chave DTD é utilizada apenas para os arquivos DTD, a ELEMENT é normalmente utilizada para fragmentos DTD os quais contenham apenas entidades e declarações de elementos. A palavra TEXT é utilizada para o conteúdo SGML (texto e tags).

Descricão

Qualquer descrição que você deseje fornecer para o conteúdo deste arquivo. O que pode incluir um número de versão ou qualquer texto curto o qual seja significativo para você e único para o sistema SGML.

Idioma

Este é um código ISO de duas letras o qual identifica o idioma nativo do arquivo. O código EN é utilizado para o idioma inglês.

3.3.1.1 Arquivos de catálogo

Se você utilizar a sintaxe acima e processar este documento utilizando um processador SGML, o processador irá precisar de uma forma de associar a FPI ao nome do arquivo no seu computador o qual contém o DTD.

Para isto devemos utilizar um arquivo de catálogo. Um arquivo de catálogo (tipicamente chamado de catalog) contém linhas as quais mapeiam FPIs para nomes de arquivos. Por exemplo, se o arquivo de catálogo contiver a linha:

PUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd"

O processador SGML saberia que deveria procurar pelo DTD strict.dtd no subdiretório 4.0 de qualquer diretório que possuísse um arquivo catalog contendo esta linha.

Veja o conteúdo do /usr/local/share/xml/html/catalog. Este é o arquivo de catálogo para o DTD HTML o qual será instalado como parte do port textproc/docproj.

3.3.1.2 SGML_CATALOG_FILES

A fim de encontrar um arquivo de catálogo, o seu processador SGML precisará saber onde procurar. Muitos deles possuem recursos de parâmetros de linha de comando para especificar o caminho para um ou mais catálogos.

Adicionalmente, você pode definir a variável de ambiente SGML_CATALOG_FILES para apontar para os arquivos. Esta variável deve consistir de uma lista, separada por dois pontos (":"), de arquivos de catálogo (incluindo seus caminhos completos).

Tipicamente, você precisará incluir os seguintes arquivos:

  • /usr/local/share/xml/docbook/4.1/catalog

  • /usr/local/share/xml/html/catalog

  • /usr/local/share/xml/iso8879/catalog

  • /usr/local/share/xml/jade/catalog

Você já deve ter feito isto.

3.3.2 Alternativas aos FPIs

Ao invés de utilizar um FPI para indicar o DTD ao qual o documento conforma-se (e consequentemente, quais arquivos no sistema contém o DTD), você pode especificar explicitamente o nome do arquivo.

A sintaxe para isto é ligeiramente diferente:

<!DOCTYPE html SYSTEM "/path/to/file.dtd">

A palavra chave SYSTEM indica que o processador SGML deve encontrar o DTD em um local específico do sistema. Isto tipicamente (mas não sempre) significa que o DTD será fornecido como um nome de arquivo.

O uso de FPIs é preferido por razões de portabilidade. Você pode não desejar ter que enviar uma cópia do DTD junto com seu documento, e se você utilizasse um identificador SYSTEM todos necessitariam manter os seus DTDs no mesmo lugar que você.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <[email protected]>.
Para perguntas sobre esta documentação, envie e-mail para <[email protected]>.