【问题标题】:Using PHP within XSL在 XSL 中使用 PHP
【发布时间】:2016-06-29 03:29:31
【问题描述】:

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

的内容

但它不起作用

【问题讨论】:

  • 请说明,你是如何尝试的。
  • 哪些错误?你到底想做什么,为什么以这种方式而不是另一种方式?

标签: php xslt document


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 它在被转换的 XML 中是如何使用的?
    【解决方案3】:

    如果您正在运行Saxon-EE 9.7 XSLT 处理器,那么您可以使用&lt;xsl:processing-instruction name="php"&gt; 作为您的&lt;?php 标记,但有一个奇怪的警告:您必须在结束&lt;/xsl:processing-instruction&gt; 标记之前添加?

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2011-10-08
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多