XSLT. Интеграция на php сайте - PullRequest
0 голосов
/ 02 ноября 2011

Я хотел бы знать, как интегрировать xslt в сайт php. У меня есть одна идея, хотя ...

PHP-скрипт сериализует данные и отображает их

<?php 
echo '
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<test>TEST</test>
';
?>

Вывод XML преобразуется в text.xsl

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output 
    method="html" 
    doctype-public="-//W3C//DTD HTML 4.01//EN" 
    doctype-system="http://www.w3.org/TR/html4/strict.dtd" 
    indent="yes"/>

<xsl:template match="/">
<h1>
<xsl:value-of select="test" />
</h1>
</xsl:template>     
</xsl:stylesheet>

Это прекрасно работает, но я не уверен, что это хороший подход. Я буду рад получить несколько советов.

UPD # 1 Роберт предложил использовать расширение PHP. И вот что я получил сейчас:

<?php
$xml='<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<test>TEST</test>';

$xslDoc = new DOMDocument();
$xslDoc->load("test.xsl");

$xmlDoc = new DOMDocument();
$xmlDoc->loadXML($xml);

$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc); 
?>

Как вы видите, есть внешний xsl-файл и php, который создает xml, загружает как xml, так и внешний xsl в DOM, а затем передает его XSLTProcessor. Это соответствует моим потребностям. Но будет ли это "хорошей практикой"?

1 Ответ

0 голосов
/ 02 ноября 2011

Так как у вас уже есть XML, вы можете захотеть взглянуть на одно из расширений XSLT для PHP, так как ваш клиент избегает многократных циклов, плюс с помощью метода, который вы не можете передать параметры к XSLT.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...