在XSL中使用PHP

时间:2009-09-25 22:09:30

标签: php xslt document

是否可以在XSL文档中使用PHP?

总是当我尝试这样做时,我会收到错误...所以在吓坏之前我想知道它是否可能。 (我是绝对的初学者)

我有一个像这样的XSL文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
 <head>
  <title></title>

   <style type="text/css">
    [...]
   </style>

 </head>
 <body>

[...]

  <div id="content">
   <?php echo $anything; ?>
  </div>

[...]

 </body>
</html>
</xsl:template>

</xsl:stylesheet>

(我剪了代码)

所以我通过PHP包含XML文件(该XML文件使用此XSL文件设置样式) 现在我试图回应例如$ anything

的内容

但它不起作用

4 个答案:

答案 0 :(得分:2)

如果您将使用XSLTProcessor类来执行XSL,则可以registerPHPFunctions。我一直在XSL中进行某些数据操作。然后我可以在XSL中调用我想要的任何PHP函数或方法。

答案 1 :(得分:1)

您可以在xsl和正在转换的xml中使用它。

  • 您的服务器必须将.xsl / .xml文件解析为php
  • 您的php必须生成有效的xsl / xml

答案 2 :(得分:1)

如果您正在运行Saxon-EE 9.7 XSLT处理器,那么您可以使用<xsl:processing-instruction name="php">作为<?php标记,但有一个古怪的警告:您必须添加{{1}在结束?标记之前。

</xsl:processing-instruction>

要使用您的示例,它将如下所示:

<xsl:processing-instruction name="php">
    echo "hello world!";
?</xsl:processing-instruction>

答案 3 :(得分:0)

您可以使用simplexml在PHP中操作XML。 http://nl.php.net/simplexml有simplexml类的引用。因此,在将XML文件加载到PHP之后,在使用asXML()函数回显它之前,您可以通过simplexml接口更改XML。