Аргерих Л. О языке РНР. Часть 5. Страница 27


нельзя составлять документы XML.

Исходный код PRAX можно взять на http://www.oreillynet.com/~rael/lang/">http://www.oreillynet.com/~rael/lang/ php/PRAX/.

Работа с PRAX в РНР

С помощью PRAX можно обрабатывать документ XML способом, похожим на запрос SQL. Запрос SQL возвращает набор записей, который можно обра­батывать или выводить. PRAX ведет себя таким же образом, и был разрабо­тан, чтобы обрабатывать данные именно так.

Есть два варианта работы с PRAX - можно послать в PRAX строку XML или открыть с его помощью файл XML. В следующем примере мы открываем файл из файловой системы.

Пример кода PRAX

Следующий код является модификацией кода примера, предоставленного автором PRAX Раелем Дорнфестом (Rael Dornfest).

В этой главе сделаны небольшие изменения в классе PRAX. php. Код примера автора выводил все на экран, чего мы делать не хотим. Мы воспользуемся глобальной отладкой. Автор был извещен, но если код не обновлен, потребу­ется обновить класс самостоятельно или загрузить его с http://www/"> http://www . wrox.com/. Вот что необходимо сделать:

ОткрытьРРАХ. php в текстовом редакторе

Найти CTpoKy$this->debug = 1;

Заменить эту строку следующей: $this->debug = $GLOBALS["debug"];

Для этого примера необходимо наличие двух файлов в одном и том же ката­логе:

• travel_simple.xml

• travel_sample. php

Вспомним, что в t ravel. xml есть атрибуты и довольно глубокая вложенность. PRAX игнорирует атрибуты типа name="a". Если в документе XML более двух уровней вложенности, содержимое вложенных элементов объединяется.

Например, в нашем файле XML есть элемент Package, являющийся родитель­ским для Package_dateofdep и Package_price. Значения этих двухдочерних эле­ментов объединяются и образуют один массив. В нашем примере этот массив содержит "5/8/98 879" и "5/8/98 779".

При работе с PRAX допускается не более трех уровней вложенности, поэто­му либо удалите из файла travel, xml элементы <Package>. . .</Package>, либо измените элементы так, чтобы они все находились на одном уровне:

<Resort_drinks>false</Resort„drinks> <Package_dateofdep>5/1/98</Package_dateofdep>

<Package_price>779</Package_prlce>

Иными словами, приведите свой документ XML к формату SML, прежде чем воспользоваться PRAX. Модифицированная версия travel.xml носит назва­ние travel_simple.xml.

Файл кода^ауе1_затр1е. php загружает, читает и выводит содержимое файла XML в виде таблицы HTML: