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


[type] => 1

[name] => Country_name [content] => Cuba [node] => Resource id #5

Мы явно выводим из массива только элементы name и content. Можно задать любое форматирование, чтобы HTML выглядел так, как требуется.

Повторим ту же схему для остальных узлов, находящихся ниже Travelpacka­ge, которые надо вывести в виде HTML. Вторая командаXPath //Travelpacka- ge[@name="a"]/* находит все дочерние узлы Travelpackage, для которых па- те="а", и снова записывает результат в $tmpArray.

Снова выводим значения в броузер, циклически обходя массив в помощью

оператора while:

$path = xpath_eval($context, "//iravelpackage[@naine=\"$var[$x]\"]/*");

$tmpArray = $path->nodeset; while (list() = each($tmpArray)) { ti++;

echo("<trxtd>");

echo($tmpArray[$i]->name);

echo("</tdxtd>");

echo($tmpArray[$i]->content);

echo("</td></tr>\n");

}

$i=0;

Следующая команда XPath //Travelpackage[@name="a" ]/Package/* находит все дочерние элементы Package, в которых Travelpackage name = "а". И снова все уз­лы, найденные при выполнении команды XPath, записываются в StmpArray. Вместо обхода массива в цикле мы обращаемся к его элементам непосредст­венно:

$path = xpath_eval($context,

"//Travelpackage[@name=\"$var[$x]\"]/Package/*");

=

echo("<tr><td>");

echo($tmpArray[0]->name);

echo("</td><td>");

echo($tmpArray[0]->content);

echo("</tdx/tr>\n");

echo(''<tr><td>");

echo($tmpArray[1]->name);

echo("</td><td>");

echo($tmpArray[1]->content);

echo (" </tdx/t r>\n");

echo( "<t rxtd colspan=2xh rx/tdx/tr>\n");

}

?>

</table> </body> </html>

Если бы длина документа XML была больше, чем два абстрактных набора за­писей, нам пришлось бы увеличить размер массива $var в соответствии с этой длиной. Конечно, для этого требуется знать размер файла XML. Если размер файла XML неизвестен или меняется, то надо применить к StmpArray функцию sizeof ().

Ниже показан результат выполнения приведенного выше кода (рис.

Модель RAX

Модель RAX работает с ориентированными на записи документами XML и документами XML в стиле SML. Реализация RAX для РНР называется PRAX и должна рассматриваться как альфа- или предварительный альфа- код. В настоящее время PRAX - единственная имеющаяся реализация RAX для PHP. PRAX представляет собой портированный на РНР модуль perl С его помощью можно читать содержимое файла XML, но