3.3 DOCTYPE декларация

В началото на всеки документ който пишете трябва да се зададе името на DTD с които документа е съобразен. Това е необходимо за да може SGML парсера да определи DTD и да потвърди, че документа отговаря на тези DTD.

Тази информация е основно на една линия в DOCTYPE декларацията.

Типична декларация за документ придържащ се към версия 4.0 of the HTML DTD изглежда така;

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

В тази линия се съдържат няколко различни компоненти.

<!

е индикатор показващ, че това е SGML декларация. В тази линия е деклариран и типа на документа.

DOCTYPE

Показва, че това е SGML декларация за тип на документа.

html

Име на първият елемент, които ще се появи в документа.

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

Показва Formal Public Identifier (FPI) за DTD и означава дефинициите към които се придържа документа. SGML парсера ще го използва, за да намери коректните DTD когато обработва този документ.

PUBLIC не е част от FPI, но показва на SGML процесора как да намери DTD указани в FPI. Други начини да се укаже на SGML парсера как да намери DTD са показани по-нататък.

>

Връщане към документа.

3.3.1 Формален Публичен Идентификатор (Formal Public Identifiers (FPIs))

Note: Не е необходимо да знаете това, но е полезно, а и може да ви помогне да откриете проблем когато SGML процесора не може да локализира DTD, които ползвате.

FPI трябва да се подчинява на определен синтаксис. Той е следният;

"Притежател//Ключова дума  Описание//Език"
Притежател

Това показва притежателя на дадения FPI.

Ако този стринг (низ) започва с ``ISO'' тогава това е ISO регистриран FPI. Например, FPI "ISO 8879:1986//ENTITIES Greek Symbols//EN" показва, че ISO 8879:1986 е регистриран като набор от наименования за гръцки символи. ISO 8879:1986 е ISO номера на SGML стандарта.

Иначе, този стринг ще изглежда или като -//Притежател или +//Притежател (забележете, че единствената разлика е началния + или -).

Ако низа започва с - тогава притежателя е нерегистриран, ако започва с + това означава, че е регистриран.

ISO 9070:1991 дефинира как регистрираните имена се генерират; може да бъде от номера на ISO публикация, ISBN код или код на организация съобразен с ISO 6523. В допълнение, авторитетна организация може да бъде създадена за да възлага регистрирани имена. ISO съвета е възложил това на American National Standards Institute (ANSI).

Поради това, FreeBSD проекта не е регистриран като притежател на -//FreeBSD. Както можете да видите сами, W3C също не е регистриран като притежател.

Ключова дума

Има няколко ключови думи показващи типа на информацията във файла. Някои от най-често срещаните са DTD, ELEMENT, ENTITIES и TEXT. DTD се използва само за DTD файлове, ELEMENT обикновенно се използва за DTD фрагменти съдържащи само озаглавявания или декларации за елементи. TEXT се използва за SGML съдържание (текст и маркери).

Описание

Описание което решите да сложите на съдържанието на този файл. Това може да включва номер на версия или нещо което има смисъл за вас и е уникално за SGML системата.

Език

Това е двубуквен ISO символен код идентифициращ нативния език за този файл. EN се използва за английски.

3.3.1.1 catalog файлове

Ако използвате описания синтаксис и обработите този документ използвайки SGML процесор, то той ще се нуждае от начин за добавяне на FPI в името на файла съдържащ DTD.

За това служи каталожния (catalog) файл. Този файл (обикновенно наречен catalog) съдържа линии, които съпоставят FPI с имена на файлове. Например, ако каталожния файл съдържа линията;

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

SGML процесора ще знае, че трябва да намери DTD от strict.dtd в поддиректория 4.0 на директорията съдържаща catalog файла с тази линия.

Вижте съдържанието на /usr/local/share/sgml/html/catalog. Това е каталожния файл за HTML DTD, които се инсталират като част от textproc/docproj порт.

3.3.1.2 SGML_CATALOG_FILES

За да може да намери catalog файл, SGML процесора ще трябва да знае къде да търси. На много от тях можете да зададете параметри от командната линия до един или повече каталози.

В допълнение можете да инициализирате SGML_CATALOG_FILES да сочи към файловете. Тази променлива на обкръжението трябва да се състои от списък с каталожни файлове (пълният път до тях) разделени с двоеточие.

Обикновенно е необходимо да включите следните файлове;

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

  • /usr/local/share/sgml/html/catalog

  • /usr/local/share/sgml/iso8879/catalog

  • /usr/local/share/sgml/jade/catalog

Би трябвало вече да сте го направили.

3.3.2 Алтернативи на FPI

Вместо да използвате FPI за да покажете, че документ отговаря на (и кои файл в системата съдържа DTD) можете да зададете името на файла.

Синтаксиса за това е леко различен:

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

Ключовата дума SYSTEM показва, че SGML процесора трябва да открие DTD в системата. Това обикновенно (но не винаги) означава, че на DTD ще бъде предоставено име на файла.

Използването на FPI е препоръчително поради съвместимост. Не бихте искали да включвате и копие от DTD заедно с документа, освен това ако използвате SYSTEM идентификатор тогава всеки ще трябва да държи своите DTD на едно и същото място.

Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

За въпроси отностно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси отностно този документ, e-mail <doc@FreeBSD.org>.