Парсим просторы XML
Никита Кислицин
Xakep, номер #061, стр. 061-094-2
<price>532p.</price>
</good>
<good>
<name>Товар 2</name>
<index>23455</index>
<price>1532p.</price>
</good>
</goods>
Внимательный читатель, знакомый с основами дискретной математики и классической информатики, заметит, что XML-документ является, фактически, деревом общего вида, одной из основных структур данных, используемых в современном программировании и построении математических моделей.
Теперь, для того чтобы извлечь из этого XML-документа список товаров в ценовой категории до 1000 р., тебе все равно потребуются немалые усилия, но благодаря самодокументированной структуре файла, написать такое приложение становится значительно проще. К тому же функции по обработке XML уже многократно описаны программистами и поставляются в виде специальных модулей.
На настоящий момент парсеры XML существуют под абсолютно любые платформы. Для ОС Windows я бы выделил производимый Майкрософтом парсер - он довольно надежен и один из самых шустрых. Кроме того, он поставляется непосредственно с самой системой. Поэтому большинство программистов используют его в своих разработках. Обработчики XML под *nix распространяются по лицензии GNU, а это значит, что они идут открытыми кодами и отдаются бесплатно, что не может не радовать :).
Ниже я покажу тебе, что приложение для обработки XML-документов можно легко написать и на языке PHP. Делается это при помощи функций анализа XML, встроенных в язык. Документы XML можно переводить и в другие разновидности XML (в частности - HTML) путем связывания с таблицей стилей XSL (eXtensible Style Language - расширяемый язык стилей). Сама таблица является XML-страницей и в ней содержится информация о том, как форматировать конкретные XML-объекты. На базе XML создано множество разнообразных языков (для разметки химических формул, музыкальных нот, математических выкладок, представления векторной графики и т.д.).
Другим путем визуализации XML-документов является составление программы лексической обработки для преобразования документа XML в другие форматы (например, тот же HTML).
Язык XML - 5 Кб
Каждый документ в формате XML содержит сочетание разметки и текстовых данных. При помощи разметки документ структурируется, а символьные данные представляют собой содержание страницы. Все XML-документы, по крайней мере, соответствующие спецификации, должны отвечать следующим правилам:
1. Каждый элемент должен содержать открывающие и закрывающие теги, "пустые" теги (например, <br> в HTML) в XML недопустимы. Но если элемент не содержит в себе данных, спецификация позволяет использовать вместо <empty> </empty> альтернативную запись <empty />.
2. XML-документ должен в обязательном порядке содержать единственную пару тегов: корневой элемент документа, в который вкладываются все остальные элементы.
3. Начальные и конечные теги каждого из элементов должны быть правильно вложены: вложенный элемент обязан полностью содержаться во внешнем контейнере. Т.е. начальные и конечные теги вложенных элементов не могут перекрывать друг друга.