3.3. A declaração DOCTYPE
Prev | Chapter 3. SGML Primer | Next

## 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)

### Note:

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ê.

Prev | Up | Next
3.2. Elementos, tags, e atributos | Home | 3.4. Voltando para o SGML

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 <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.