2

是否可以在 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

4 回答 4

2

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

于 2009-09-27T01:46:40.037 回答
1

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

  • 您的服务器必须将 .xsl/.xml 文件解析为 php
  • 您的 php 必须生成有效的 xsl/xml
于 2009-09-25T22:13:28.397 回答
1

如果您正在运行Saxon-EE 9.7 XSLT 处理器,那么您可以将<xsl:processing-instruction name="php">用作您的<?php标记,但需要注意一个奇怪的警告:您必须?在结束</xsl:processing-instruction>标记之前立即添加 。

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

要使用您的示例,它看起来像这样:

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

        <xsl:processing-instruction name="php">
            echo $anything;
        ?</xsl:processing-instruction>

  </div>

[...]

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

</xsl:stylesheet>
于 2016-06-28T19:29:31.417 回答
0

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

于 2009-09-25T22:47:46.473 回答