Can PHP communicate with XSLT?

守給你的承諾、 提交于 2019-11-30 21:17:54

问题


I want to use a combination of xml & xslt as a templating system. The question that I want answered is: can xslt and PHP communicate with each other (i.e share variables)?


回答1:


The basic task you can do with PHP is to define which XML file to transform with which XSLT script. Using this you can
a) pass parameters from PHP to XSLT and
b) use PHP functions in the XSLT script.
This example shows how - first PHP file:

<?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"));
?>

second XSLT file:

<?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>

The output should be 123456
EDITED: select="''" instead select=""




回答2:


XSLT is a language, not a piece of software. It entirely depends what software you are using to process your XSLT: if it is a PHP extension, running as part of your existing PHP app, then yes. Otherwise, no.




回答3:


What exactly do you mean by "share variables"? Do you want a PHP script to generate XSLT first and use that output in another PHP script to render your XML data? If so, then yes, that's possible. It doesn't matter where the XSLT comes from.



来源:https://stackoverflow.com/questions/3457584/can-php-communicate-with-xslt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!