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


</td>

</tr>


<tr> <td>

<xsl:text>Resort_watersports</xsl:text>

</td> <td>

<xsl:value-of select="Resort_watersports" /> </td> </tr> <tr> <td>

<xsl:text>Resort_meals</xsl:text> </td>

<td>

<xsl:value-of select="Resort_meals" /> </td> </tr> <tr> <td>

<xsl:text>Resort_drinks</xsl:text>

</td> <td>

<xsl:value-of select="Resort_drinks" /> </td> </tr> <tr> <td>

<xsl:text>Package_dateofdep</xsl:text>

</td>

<td>

<xsl:va!ue-of select="*/Package_dateofdep" />

</td> </tr>

<tr>

<td>

<xsl:text>Package_p rice</xsl:text>

</td> <td>

/>

</td> </tr> <tr>

<td colspan="2"xhr /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>


Напомним, что в этой главе мы занимаемся просто отображением XML в ви­де файла HTML. С помощью XSL можно было бы отобразить практически все, что можно вообразить. Файл XML travel, xml вам уже знаком.

Для этого кода требуется лишь загрузить файлы XSL и XML в строку и вы­звать процессор XSLT.1 Процессор XSLT возвращает (в данном случае) стро­ку отформатированного HTML в броузер. Все действия по форматированию XML выполняются процессором при следовании правилам, описанным в файле XSL. Если не хотите обращаться к внешним файлам, можно вклю­чить строку XSL или строку XML в код РНР. Это делается при помощи объ­явления специальных аргументов 'arg:/_xml', 'arg:/_xsl' и массива argu­ments - пятого параметра функции, содержащего данные XML и XSL.

Следующий код php) показывает, как считать содержимое этих

файлов в $xslData и $xmlData. Поскольку переменные $xslData и $xmlData пред­ставляют собой массивы, необходимо преобразовать их в строки, воспользо­вавшись функцией implode(). Получив строки, можем вызвать процессор:

<?php

$xslData = file("travel.xsl", "r"); $xmlData = file("travel.xml", "r");

{arguments = array ( '/_xsl' => implodeC", $xslData), '/_xml' => implodeC", $xmlData) )

$xh = xslt_create(); // создадим процессор XSLT

if (Sresult= xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, {arguments)) {

echo($result); } elsey®

echo("There is an error in the XSL transformation, . .\n"); echo("\tError number: " . xslt_errno($xh) . "\n"); echo("\tError string: " . xslt_error({xh) . "\n");