Xml XSLT。php站点上的集成

Xml XSLT。php站点上的集成,xml,templates,xslt,Xml,Templates,Xslt,我想知道如何将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" en

我想知道如何将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>
它工作得非常好,但我不确定这是否是一个好方法。我很乐意得到一些提示

UPD1 Robert建议使用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。这符合我的需要。但是这是一个好的实践吗?

既然您已经有了XML,那么您可能需要查看一个用于PHP的XSLT扩展,这样您的客户机就可以避免多次往返,而且使用的方法无法将参数传递给XSLT


您还可以使用Javascript在客户端以允许传入参数的方式运行XSLT,但这是由于浏览器兼容性问题。客户端还意味着用户正在下载XML和XSLT内容,除非您非常关心服务器端的put,否则我会避免这种情况,因为在我的特别体验中,通常依赖您可以控制的服务器端环境要好得多。

谢谢您的快速回复。我已经更新了。这就是你的意思吗?