С помощью XML модно описать структурированный текст любого вида, в том числе другие языки разметки. Существует свыше десятка языков разметки, основанных на XML. С их помощью описывается все - от графики до математических уравнений. Чтобы не выйти в этой главе за рамки допустимого, мы рассмотрим только те средства XML, которые реализованы в РНР и применяются для чтения и записи файлов XML. Конкретно мы рассмотрим базовый файл XML, способ спецификации частей файла XML (XPath) и упрощенный формат XML под названием SML.
Подробности различных стандартов XML можно получить на сайте World Wide Web Consortium (W3C). W3C - это организация, управляющая различными стандартами Интернета (например, XML). Она отвечает за выход и поддержку семейства спецификаций и рекомендаций XML. Дополнительные сведения можно найти по адресу
В данной главе будут
♦ Основы XML, SML и XPath
♦ XML как хранилище данных и программное взаимодействие с ним
♦ API PHP (SAX, DOM и PRAX), позволяющие работать с документом XML
♦ Примеры использования API
♦ Поддержка Sablotron XSL в РНР
На момент написания этой главы поддержка XML в РНР все еще считалась экспериментальной. Эта особенность проявляется, когда поведение кода становится неожиданным и непоследовательным.
ОбзорXML
Как и документ HTML, документ XML содержит теги и данные. В отличие от HTML, имена тегов XML могут быть почти произвольными. Например, <В>, <ВЬ> и <4f5gt6g> будут допустимыми тегами XML (открывающими), хотя из этого списка в HTML допустим только тег <В>. Как и документ HTML, документ XML может содержать данные между открывающим и закрывающим тегами, например <B>text</B> и <Bb>some text</Bb>. В XML сочетание открывающего тега, данных и закрывающего тега называется элементом.
На этом рисунке показаны различные части элемента XML (рис.
Элемент, состоящий из одного открывающего и одного закрывающего тега, нескольких необязательных атрибутов, необязательного содержимого из символьных данных и вложенных элементов (дочерних узлов), рассматривается как узел (node). В элементе присутствуют открывающий и закрывающий теги, например ,<firstx/first> или <lastx/last>. Имя тега должно быть уникальным и оно чувствительно к регистру. Элемент может быть контейнером для других, элементов или содержать символьные данные. Атрибут - это часть элемента, например <first id="4">, где id="4" является атрибутом, a first — именем элемента. Атрибут похож на массив тем, что у обоих есть пара ключ-значение.