РНР 5 в подлиннике

Страница 461 из 554


Гпава 41. Расширение SIMPLEXML

931

$xml = "<?xml version=11.О 1 encoding=1".Encoding."'?> <root>

<childl>TeKCT</childl>

<child2>TeKCT</child2>

<childl>TeKCT</childl> </root>";

// Загрузка документа.

$sxml = simplexml_load_string($xml); // загрузка XML-документа

// Корректировка элемента child2.

$sxml->child2 .= utf8encode("+добавленный текст");

$sxml->child2['add'] = utf8encode('добавленный атрибут');

// Корректировка элементов childl.

$sxml->childl[0] .= utf8encode("+добавленный текст"); $sxml->childl[1] .= utf8encode("+добавленный текст"); $sxml->childl[0] ['add'] = utf8encode(1 добавленный атрибут'); $sxml->childl[1]['add'] = utf8encode('добавленный атрибут'); // Вывод документа, echo $sxml->asXML();

В приведенном сценарии к дочерним элементам childl и chiid2 корневого элемента добавляется текст и атрибут add. Результат выполнения сценария показан в листинге 41.14.

i Листинг 41.14. Результат выполнения сценария correct.php

<?xml version="l.0" encoding="KOI8-R"7> <root>

<childl add="дoбaвлeнный атрибут">текст+добавленный текст </childl>

<child2 add="flo6aBneHHbM атрибут">текст+добавленный TeKCT</child2>

<childl add="дoбaвлeнный атрибут">текст+добавленный текст </childl> </root>

Внимание!

В начальном релизе РНР 5.0.0 добавление содержания к дочернему элементу по индексу: $sxml->childl[0]['add'] = utf8encode('добавленный атрибут') не работает. В последующих релизах данная ошибка исправлена.

Резюме

В данной главе мы рассмотрели расширение SIMPLEXML, представленное классом simpiexml_eiement. Из всех приведенных в данной части книги расширений, ориентированных на работу с XML, это расширение самое непредсказуемое. За время написания этой книги интерфейс работы в данном расширении неоднократно модифицировался. Это объясняется тем, что SIMPLEXML не имеет в своей основе какого-либо международного стандарта.

ГЛАВА 42

Расширение XSLT

Листинги данной главы можно найти в подкаталоге xml/xs/t.

XSLT (Extensible Stylesheet Language Transformations) представляет собой язык преобразований XML-документов в другие XML-документы.

В настоящее время данный язык получил широкое распространение в области обработки таких документов. Язык РНР 5 включает в себя модуль XSL (Extensible Stylesheet Language), выполняющий функции интерпретатора языка XSLT. За время своего развития РНР "пережил" три этапа поддержки языка XSLT. Первый вариант создавался вплоть до версии 4.1. Поддержка XSLT в нем разрабатывалась с "нуля". Начиная с версии 4.1, этот модуль быль переписан заново с использованием библиотеки sablotron, обеспечивающей функции XSLT-процессора. Данная версия поддерживала набор функций, обеспечивающих создание XSLT-процессора и обработку XML-документов. Третий вариант, разработанный в рамках РНР 5, также основан на стандартной библиотеке sablotron, но в нем используется объектно-ориентированный подход при работе с языком XSLT.

Для подключения данного расширения на этапе компиляции необходимо при конфигурации РНР задать флаг -with-xsi:

configure ... —enable-dom -with-xsl ...

Следует заметить, что расширение XSLT требует для своей работы расширение DOM, т. к. входные и выходные документы представляются в виде объектов класса

domDocument.

Общие сведения о языке XSLT

Для неподготовленного человека язык XSLT представляется довольно необычным. В программе, написанной на этом языке, довольно трудно отследить порядок обработки информации.

Для читателей, знакомых с операционной системой Unix, ближайшим аналогом является язык AWK. Как и в языке AWK, программа на языке XSLT представляет собой набор шаблонов, описывающих части документа и действия, применяемые к этим частям. В отличие от языка AWK, программа на языке XSLT является XML-документом, который загружается XSLT-процессором. Рекурсивно обходя дерево




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006