Глава 3. Учебник SGML

Содержание
3.1. Обзор
3.2. Элементы, метки и атрибуты
3.3. Декларация DOCTYPE
3.4. Возвращение к SGML
3.5. Комментарии
3.6. Сущности
3.7. Использование сущностей для включения файлов
3.8. Отмеченные разделы
3.9. Заключение

Основной объем документации FDP написан в приложениях SGML. В этой главе в точности описывается, что это значит и как читать и понимать исходный текст документации, а также некоторые из приемов SGML, применение которых вы увидите в документации.

Часть этого раздела была написана по мотивам Начал работы с DocBook от Марка Галасси (Mark Galassi).

3.1. Обзор

Были времена, когда с электронным текстом работать было просто. Вы примерно знали, в каком наборе символов был написан ваш документ (ASCII, EBCDIC или в каком-то другом), но этого было достаточно. Текст был текстом, и то, что вы видели, то и получали. Без украшательств, без форматирования, бездумно.

Несомненно, этого было недостаточно. Как только у вас появляется текст в формате, понимаемом машиной, вы ожидаете, что машины могут использовать его и работать с ним более разумно. Вы хотели бы указывать, что некоторые фразы должны быть выделены или добавлены к словарю, или быть гиперссылками. Вы можете захотеть, чтобы имена файлов показывались шрифтом ''пишущей машинки'' для просмотра на экране и ''наклонным'' при печати, и любым другим из мириад других параметров для представления.

Когда-то возлагались надежды на то, что системы искусственного интеллекта (ИИ) облегчат эту задачу. Ваш компьютер будет читать ключевые идентификационные фразы, имена файлов, текст, который должен вводиться, примеры и более. К сожалению, в реальности все случилось не так, и наши компьютеры требуют некоторой помощи перед тем, как они смогут осмысленно обрабатывать наш текст.

Более точно, им нужна помощь в определении того, что есть что. Вы или я можем посмотреть на текст

Чтобы удалить /tmp/foo, воспользуйтесь командой rm(1).

% rm /tmp/foo
и с легкостью определить, где здесь имена файлов, а где команды, которые требуются ввести, в каких частях текста стоит ссылка на страницы справочной системы, и так далее. Но компьютер, обрабатывающий документ, этого сделать не может. Для этого нам нужна разметка.

Термин ''разметка'' часто использовался для описания ''добавления важности'' или ''увеличения стоимости''. Термин принимает оба этих смысла в применении к тексту. Разметка является дополнительным текстом, включаемым в документ, некоторым образом отделяемым от содержимого документа, так, чтобы программы, обрабатывающие документ, могут читать разметку и использовать ее при принятии решений о документе. Текстовые редакторы могут скрывать разметку от пользователя, так что пользователь не будет ею смущен.

Дополнительная информация, хранимая в разметке, добавляет важность документу. Добавление разметки к документу обычно должно делаться человеком--в конце концов, если компьютеры могут распознавать текст достаточно успешно для того, чтобы добавить разметку, то нет нужды добавляться ее сразу. Это увеличивает стоимость (то есть требуемые усилия) создания документа.

Предыдущий пример представлен в этом документе примерно так;

<para>Для удаления <filename>/tmp/foo</filename>, воспользуйтесь командой
  &man.rm.1;.</para>

<screen>&prompt.user; <userinput>rm /tmp/foo</userinput></screen>

Как вы можете видеть, разметка четко отделена от содержимого.

Очевидно, что если вы собираетесь использовать разметку, то вам нужно определить, что она значит, и как она должна интерпретироваться. Вам требуется язык разметки, которому вы можете следовать при разметке ваших документов.

Конечно, одного языка разметки может оказаться недостаточно. Язык разметки для технической документации имеет весьма значительно отличающиеся требования от языка разметки, используемого для кулинарных рецептов. Он, в свою очередь, будет сильно отличаться от языка разметки, используемого для поэзии. На самом деле в первую очередь вам нужен первичный язык, который вы будете использовать для написания этих других языков разметки. Вам нужен метаязык разметки.

И это именно то, чем является Standard Generalised Markup Language (SGML). Многие языки разметки были написаны на SGML, включая два наиболее часто используемые в FDP, HTML и DocBook.

Определение каждого языка более правильно называется Определением Типа Документа (Document Type Definition - DTD). DTD задает имена элементов, которые могут использоваться, в каком порядке они следуют (и может ли некоторая разметка использоваться внутри другой) и связанную с этим информацию. Иногда DTD называют приложением SGML.

DTD является полной спецификацией всех возможных элементов, порядка их следования, какие элементы являются обязательными, какие нет, и так далее. Это позволяет написать лексический анализатор SGML, читающий DTD и документ, который, как предполагается, соответствует этому DTD. Затем анализатор может подтвердить, все ли документы, требуемые DTD, располагаются в документе в правильном порядке, и есть ли ошибки в разметке. Обычно это называется ''проверкой документа''.

Замечание: Эта обработка просто проверяет, что набор элементов, их порядок и так далее. соответствует тому, что перечислено в DTD. При этом не проверяется, используете ли вы разметку, подходящую к содержимому. Если вы попытались выделить все имена файлов в вашем документе как имена функций, то лексический анализатор не укажет, что это ошибка (конечно, при этом предполагается, что ваш DTD задает элементы для имен файлов и функций, и они могут появляться в одном и том же месте).

Скорее всего, что больше всего посылок в Проект Документирования будет состоять из содержимого, размеченного в HTML or DocBook, а не в альтернативных DTD. По этой причине эта книга не будет затрагивать вопросов написания DTD.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.