PHP可以与XSLT通信吗?

时间:2010-08-11 11:02:00

标签: php xml model-view-controller template-engine xslt

我想使用xml和amp;的组合xslt作为模板系统。我想回答的问题是:xslt和PHP能相互通信(即共享变量)吗?

3 个答案:

答案 0 :(得分:2)

您可以使用PHP执行的基本任务是定义要使用哪个XSLT脚本转换的XML文件。使用这个你可以 a)将参数从PHP传递给XSLT和
b)在XSLT脚本中使用PHP函数 这个例子展示了如何 - 第一个PHP文件:

<?php
function f($value){
  //do something
  return $value;
}
$proc=new XsltProcessor;
$proc->registerPHPFunctions();
$proc->setParameter('', 'p', '123');
$proc->importStylesheet(DOMDocument::load("script.xsl"));
echo $proc->transformToXML(DOMDocument::load("data.xml"));
?>

第二个XSLT文件:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" exclude-result-prefixes="php">
  <xsl:param name="p" select="''"/>
  <xsl:template match="/">
    <xsl:value-of select="$p"/> 
    <xsl:value-of select="php:function('f', '456')"/>
  </xsl:template>
</xsl:stylesheet>

输出应为123456
编辑:select =“''”而不是select =“”

答案 1 :(得分:1)

XSLT是一种语言,而不是一种软件。 这完全取决于您使用什么软件来处理XSLT:如果它是PHP扩展,作为现有PHP应用程序的一部分运行,那么是。否则,没有。

答案 2 :(得分:0)

“共享变量”究竟是什么意思?您是否希望PHP脚本首先生成XSLT并在另一个PHP脚本中使用该输出来呈现XML数据?如果是的话,那么是的,那是可能的。 XSLT的来源并不重要。