2. Emacs+PSGML

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

2.1. Установка PSGML

Вы можете загрузить PSGML с домашней страницы PSGML или, если вы пользователь Mandrakelinux и у вас есть источник с «дополнительным ПО» или CD, настроенные в Менеджере источников программ, простой запуск urpmi psgml установит PSGML.

2.2. Осведомлённость о DTD

Режим PSGML прекрасно осведомлён о DTD. Это означает, что при использовании PSGML вы всегда получите правильно сформированные и действительные XML-файлы. Пожалуйста, обратитесь к The XML FAQ для получения дополнительной информации о значении терминов «well-formed» и «valid».

PSGML'у необходимо каким-либо образом сообщить о DTD, которому соответствует ваш модуль, чтобы он был «осведомлён» об этом шаблоне. Для этого Borges вставляет в конец каждого исходного XML-файла модуля:


<!-- Keep this comment at the end of the file
Local variables:
mode: xml
sgml-parent-document: ("../../manuals/module/en/psgml-top.xml" "корневой_элемент")
End:
-->

    

где mode: xml гарантирует, что Emacs войдёт в режим XML после автоматической загрузки PSGML, когда вы откроете в нём исходный XML-файл модуля, а корневой_элемент должен быть заменён корневым элементом модуля, например, chapter, если рассматриваемый модуль является chapter'ом.

Подсказка

Если вас что-то удивляет, то имя файла psgml-top.xml автоматически создаётся в каталоге manuals/module/ при настройке Borges.

2.3. Основные команды PSGML

Режим PSGML добавляет мощные команды, которые берут на себя ввод тегов и/или атрибутов элементов при работе с простыми текстовыми XML-файлами.

Замечание

В следующей таблице перечислены некоторые команды PSGML без какого-либо порядка или приоритета. Пожалуйста, обратитесь к документации PSGML для получения полного списка доступных команд.

Подсказка

Если вы видите, что-то вроде Ctrl-C-Ctrl-E, это означает, что вы должны нажать клавиши Control плюс C и сразу после этого клавиши Control плюс E.

Таблица 5.1. Команды PSGML

КомандаКомбинация клавиш или пункт менюОписание
Вставка элементаCtrl-C-Ctrl-EВставляет элемент, ограниченный шаблоном DTD. Т.е. могут быть вставлены элементы, разрешённые DTD. Если вы нажмёте клавишу Tab key, в мини-буфере Emacs будет показан список действительных элементов. Если для вставляемого элемента требуются атрибуты, вам будет предложено ввести их значения в мини-буфере Emacs'а.
Проверка файлаCtrl-C-Ctrl-VЗагружает DTD, делает его синтаксический разбор (если ещё сделан), а затем показывает в мини-буфере Emacs'а внешнюю команду проверки. При нажатии на клавишу Enter будет выполнена проверка файла с выводом списка найденных ошибок.
Переход к следующей ошибкеCtrl-C-Ctrl-OЭта команда включает в себя проверку, но вместо вывода списка ошибок она останавливается на первой найденной ошибке и показывает в мини-буфере Emacs'а сообщение об этой ошибке. Это более предпочтительный способ проверки файлов.
Завершение элементаCtrl-C-/Закрывает текущий открытый элемент. По сути команда вставки элемента вставляет соответствующим образом открывающий и закрывающий теги, но если вы вводите имя элемента и хотите закрыть его, на набирая весь закрывающий тег, то вам пригодится эта команда.
Список действительных теговCtrl-C-Ctrl-TВыводит список всех действительных тегов, которые могут быть вставлены с текущего положения курсора. Это полезно при работе со «сложными»DTDs (типа DocBook), где некоторые элементы могут включать в себя десятки элементов, и вы при всём желании не сможете запомнить их все. Она может быть использована как быстрый «напоминатель»DTD.
Сворачивание элементаCtrl-C-Ctrl-F-Ctrl-EСворачивает элемент, в котором находится курсор. Это очень удобно, когда вы работаете с большими файлами и вам нужно быстро просмотреть структуру документа (или его части). Эффект сворачивания элемента заключается в том, что показываются только открывающий тег и одна строка контента с окончанием, заключённым в круглые скобки (...).
Разворачивание элементаCtrl-C-Ctrl-U-Ctrl-EРазворачивает свёрнутый элемент, в котором находится курсор.
Вставка атрибутаMarkup->Insert AttributeВыводит список атрибутов, действительных для элемента под курсором, из которого вы можете выбрать тот, который вы хотите вставить. Если для выбранного атрибута требуется значение, вам будет предложено ввести его в мини-буфере Emacs'а.