Телефон: +7 (926) 245-03-63

XML в PHP

Следующая статья: Как перекодировать строку в EBCDIC?

Установка

Для того, чтобы иметь возможность писать документы в XML с последующей трансформацией в HTML через XSLT вам нужно иметь PHP сконфигуренный с поддержкой:

XML (--with-expat)
XSLT (--with-sablot=/usr/local)

Как использовать

Для начала надо ознакомиться с докой PHP по использованию XSLT а также XSLT specification и XPath language. Также вам понадобиться использовать output буфферы чтобы перенаправить сгенеренный PHP текст в XSLT процессор. После этого вы можете написать простой скрипт:

<?php
// начинаем буффер
ob_start ();
?>
<xml>
<title>Welcome to the world!</title>
<author>
 <name>Имя</name>
 <email>mail@mail.ru</email>
</author>
<content>
Hello world form <?echo $PHP_SELF?>!
<?php
// любой PHP код выводящий <u>правильный</u> XML!
?>
Привет по русски!
Для того что-бы использовать русский язык нужно перед
обработкой преобразовать в UTF8 а после обработки обратно.
</content>
</xml>
<?php
// берем из буффера
$text=ob_get_contents ();
ob_end_clean ();
// читаем XSL stylesheet
$xsl=join ('',file ('example.xsl'));
// обрабатываем
xslt_process (utf8_encode ($xsl), utf8_encode ($text), $result);
// выводим на экран результат
echo utf8_decode ($result);
// echo '<pre>'.htmlspecialchars (utf8_encode ($text)).'</pre>';
?>

Используется следующий шаблон example.xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" encoding="utf-8" />
<xsl:template match="xml">
<html><xsl:apply-templates/></html>
</xsl:template>
<xsl:template match="title">
<font size="+1"><xsl:apply-templates/></font>
</xsl:template>
<xsl:template match="author">
 by <a href="mailto:{email}">
 <xsl:value-of select="name"/>
 </a>
</xsl:template>
<xsl:template match="content">
 <blockquote>
 <xsl:apply-templates/>
 </blockquote>
</xsl:template>
<xsl:template match="p">
 <p/>
</xsl:template>
</xsl:stylesheet>

После работы которого на экран будет выводится следующее:

<?xml version="1.0" encoding="utf-8"?><html>
Welcome to the world! by <a href="mailto:mail@mail.ru">Имя</a>
<blockquote>
Hello world form /Имя/xsltlib/example.php!
<p/>
Привет по русски!
<p/>
Для того что-бы использовать русский язык нужно перед
обработкой преобразовать в UTF8 а после обработки обратно.
</blockquote>
</html>

Зачем?

Это очень удобно, php генерит контент а xsl шаблон создает HTML страничку (пожно WAP, TXT, etc). Вам не надо думать о том как это выглядит, только о структуре данных, представленных в XML.

Интересное в интернете: жилой комплекс анапа