Emacs для начинающих

Обнаружение ошибок разметки


Как было показано ранее самый быстрый способ активировать PSGML после загрузки документа - это запустить команду sgml-next-trouble-spot (C-c C-o). Для многих пользователей PSGML это привычная процедура.

Следует неоднократно повторять данную процедуру в процессе работы. Например, всякий раз перед сохранением документа, чтобы быть уверенным, что структура сохраняемого документа не содержит ошибок. Переместите курсор в начало документа, или начало той части документа, которую необходимо проверить и нажмите C-c C-o. Если в окне минибуфера появится сообщение "Ok", значит PSGML не обнаружил каких бы то ни было проблем.

Следует помнить, что команда PSGML sgml-next-trouble-spot не выполняет полный синтаксический анализ, а только помогает отследить явные ошибки. Чтобы проверить текст надлежащим образом, нажмите комбинацию клавиш C-c C-v (команда sgml-validate. По этой команде экран будет разбит на два окна, в одном из которых будут выводиться сообщения о процессе выполнения синтаксического анализа документа, в том числе и сообщения об ошибках, если таковые будут обнаружены. окне. По умолчанию в PSGML установлен синтаксический анализатор 0.4 beta 2 nsgml. Это свободно распространяемая версия синтаксического анализатора, разработанного Джеймсом Кларком. Ниже будет показано, как можно установить в PSGML другой синтаксический анализатор.

После нажатия C-c C-v (пункт Validate меню SGML), PSGML в окне минибуфера выведет сообщение о запускаемой на выполнение команде, которое при необходимости можно отредактировать:

Validate command: nsgmls -s whalin.sgm

(Ключ s сообщает nsgmls, что нужно выводить только сообщения об ошибках и не отображать информацию о ходе синтаксического анализа.) Редактирование необходимо для вставки, если потребуется, имени файла, содержащего объявления SGML (SGML declarations), перед именем файла документа. Вызвано это тем, что nsgmls, являющийся достаточно полным синтаксическим анализатором, гораздо в большей степени заботится о конструкциях SGML, чем PSGML следует Reference Concrete Syntax. А поскольку Reference Concrete Syntax не позволяет названию типа элемента иметь более восьми символов, то nsgml будет выдавать двухстрочные сообщения об ошибках всякий раз, когда встретит где-либо в тексте подобную конструкцию.

Когда команда проверки синтаксиса появится в окне минибуфера, переместите курсор и введите имя файла, содержащего объявления SGML:

Validate command: nsgmls -s ..\catalog\docbook.dcl whalin.sgm

Предполагается, что путь к программе синтаксического анализа установлен. Если PSGML не может найти nsgml, то появится соответствующее сообщение об ошибке в окне вывода.



Содержание раздела