php - 在 PHP 中动态生成的 XML 上使用 XSLT document()

标签 php xml xslt

在我的 XSLT 文件中。我用document()功能

<xsl:variable name="Publicity" select="document('./publicity.xml')" />

这可行,但如果我尝试链接动态生成 XML 的 PHP 脚本,

<xsl:variable name="Publicity" select="document('./publicity.php')" />

我得到一个

Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: file:///C:/wamp/www/XSLT/test.php:3: parser error : Start tag expected, '<' not found in ... on line ...

其中包括 <来自<?php

看起来 XSLTProcessor 没有像通过 HTTP 请求那样请求文件,因此它不是由 Apache/PHP 执行的。

我知道我可以简单地将该 XML 结构包含到我的主 XML 中,但我试图避免这种情况......直到有人告诉我没有其他方法。

谢谢!

最佳答案

正确的 document() 函数只是从磁盘读取文件,它不会发出 HTTP 请求。所以 PHP 不会执行。

您必须使用 URL 而不仅仅是文件名作为 document() 函数的参数。

<xsl:variable name="Publicity" 
     select="document('http://example.com/publicity.php')" />

我相信以这种方式使用 URL 是大多数 XSLT 处理器的常见功能,但我还没有使用 PHP 对其进行测试,因此您的情况可能会有所不同。

关于php - 在 PHP 中动态生成的 XML 上使用 XSLT document(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949698/

相关文章:

php - Preg替换为数组中的单词

php - 将 php 搜索数组与查询结果相结合 - 内连接 php 数组

java - 设置首字母大写 Build.DEVICE?

java - 使用 XSLT 将 XML 转换为 HTML

php - 访问被拒绝 'user' @'localhost'

php - 上游从上游读取响应 header 时发送了太大的 header

python - 如何在提供给 python 中的 xml.sax 解析器之前从 xml 文件中删除特殊字符和 & 标记(无效的 xml 标记)

html - 目录 XSL

xml - 使用 XSLT 打印计数

performance - if/else条件和模板匹配条件之间的区别