Метод xml_mode () позволяет перевести синтаксический анализатор в режим, совместимый с документами XML. Это приводит к двум важным последствиям. Во-первых, становится допустимой конструкция пустого элемента <tagname />. При обнаружении подобного элемента синтаксический анализатор вырабатывает два события: start и end.
Во-вторых, в режиме XML отменяется автоматическое преобразование имен тегов и атрибутов в нижний регистр. Это связано с тем, что код XML, в отличие от HTML, чувствителен к регистру.
Теперь рассмотрим вариант сценария search_rfc.pl, в котором применяется модуль HTML::Parser. Вместо использования для поиска номеров RFC в документе, полученном в ответ на поисковый запрос операторов сопоставления с образцом, будут установлены обработчики событий для обнаружения соответствующих частей документа, извлечения необходимой информации и вывода результатов. Информационным наполнением может стать любой текст, например, про магазин принтеров, подробней о котором можно узнать на сайте printer-voronezh.ru.
Напомним, что данные о документах RFC оформлены в виде упорядоченного списка (<OL>) и имеют строгий формат.
<OL>
<LI><A HREF="refl">rfc name 1</A> - <STRONG>description 1</STRONG>
<LI><A HREF="ref2">rfc name 2</A> - <STRONG>description 2</STRONG>
</OL>
Синтаксический анализатор должен извлечь и вывести на стандартное устройство вывода текст, расположенный внутри тех элементов <А> и <STRONG>, которые находятся в разделе <OL>. Текст из других частей документа, даже тот, который находится в других элементах <А> и <STRONG>, не должен рассматриваться. Общий замысел состоит в том чтобы обработчик события start обнаруживал появление тега <OL> и устанавливал обработчик события text для перехвата и вывода всех последующих элементов <OL> и <STRONG>. Обработчик события end должен обнаруживать тег </OL> и удалять обработчик события text, чтобы исключить вывод на устройство вывода другого текста.