Документ XML как источник данных
Существуют две различные модели извлечения информации из документа XML. В настоящее время самой популярной из них является Объектная модель документа (DOM). В распоряжении программиста есть два способа доступа к документу XML: DOM и SAX. Простой интерфейс прикладного программирования для XML — SAX (Simple API for XML) — по своей сути является средством синтаксического разбора. Он читает документ XML и последовательно генерирует события (такие как “начало элемента” или “атрибут конца”), обработка которых уже возлагается на разработчика программы. В общем случае в процессе обработки события текст XML еще не виден. Объектная модель документа DOM (Document Object Model) представляет корректно сформированный документ XML в виде дерева узлов. На момент получения документа DOM весь текст XML уже обработан и доступен. Любой узел в документе DOM имеет свой путь (подобно тому, как путь в файловой системе уникально определяет путь от корня до конкретного файла). Путь к узлу XML формируется с помощью еще одного языка — XPath. Он может выглядеть следующим образом. В приведенном примере мы ищем узел author, являющийся дочерним элементом узла book (который, в свою очередь, является дочерним элементом корневого узла) и имеющий значением атрибута name строку Alex Kriegel. Так же как файлы с одинаковыми именами могут существовать в разных папках, одинаковые значения атрибутов могут иметь разные элементы. К примеру, Алекс Кригель является автором или соавтором множества книг, так что приведенный выше запрос вернет несколько элементов. В дереве DOM узлы могут быть представлены не только как элементы, но и как атрибуты и прочие сущности (содержимое, примечания и т. п.). Каждый узел может быть адресован с помощью выражения XPath. К любому документу XML можно выполнять запросы; соответствующий язык называется XQuery, и он основан на XPath. XQuery в мире XML является аналогом языка SQL в пространстве баз данных. XPath 2.0 создавался одновременно с XQuery, при этом основной целью была совместимость с синтаксисом и семантикой XPath 1.0. Далее будет представлено несколько примеров запросов XQuery.