php - 在 XSL 中定义 PHP 函数并调用它。可能的?如何?

标签 php xml xslt transformation

如标题所示:是否可以在 XSL 文档中编写 PHP 函数并在之后调用它?

我没有案例,我想这样做。这只是我在学习 XSL 时想到的一件事。

在 XSL 中,您可以编写如下内容:

<xsl:processing-instruction name="php">
   ...some php...
</xsl>

PHP 代码将在您呈现的页面中运行。是否可以创建例如处理指令中的 PHP 函数并稍后调用它(在同一模板中)?

伪样本:

<xsl:template>

   <xsl:processing-instruction name="php">
      ...some php processing $foo...
   </xsl>

   <xsl:variable name="foo" select="xpath/node">

   <xsl:value-of select="call-php-function-with-$foo"/>

</xsl>

我期待着您的解决方案/方法:)

克里斯

最佳答案

我认为所选答案指向错误的方向。无需使用 FXSL,您可以轻松地将用其他语言编写的扩展添加到 XSLT - 例如 Jython 或带有 Xalan 的 Javascript,带有大多数 Java 处理器的 Java 等。

至于 PHP,如果您在 PHP 脚本中进行 XSLT 处理(而不是从 Ant 或其他东西运行的 Xalan),那么使用 XSLTProcessor::registerPHPFunctions 非常容易,它允许您编写类似

$xsl = <<<EOF
...
<xsl:value-of select="php:function('myFunc', . )"/> 
...
EOF;

function myFunc( $node ) {
//etc

当然,只有 PHP 脚本才能正确处理 XSL。

这一切都非常清楚地记录在 http://www.php.net/manual/en/xsltprocessor.registerphpfunctions.php

关于php - 在 XSL 中定义 PHP 函数并调用它。可能的?如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271558/

相关文章:

php - 多维数组合并

php - 将 php 回显到 google map javascript

php - 将 CallbackFunction 作为 Ajax 请求的参数传递

php - 使用 PHP/PDO 将 future 10 分钟添加到 MySQL 数据库中

c# - 在 C# 中序列化对象时如何指定 XML 编码

java - DrawerLayout - 文档中根元素后面的标记必须格式正确

Python etree xml写入问题

xml - XSLT:从特定 child 开始的 child 的不同迭代

xml - 为什么我的图像没有显示在 XSL-FO 中?

java - XMLunit 仅比较标签