【问题标题】:Change the xslt file of an xml file using php使用php更改xml文件的xslt文件
【发布时间】:2019-07-28 09:08:18
【问题描述】:

大家好,我想使用 PHP 动态更改 XML 文件的样式表 像这样的东西: the XML file register.xml
当我尝试显示它时,它会告诉我: the out put

好的,这就是我想要做的:
1) 正如我之前提到的,我有一个名为“regiter.xml”的 XML 文件
2) 假设我有 3 个扩展名为 .xsl 的文件(style1.xsl、style2.xsl、style3.xsl)
3) 我有一种表单标签,让用户可以选择如何显示 XML 文件,他可以选择 style1 或 2 或 3。
4) 我想根据用户的选择动态更改文件“register.xml”的标签 中的属性href="file.xsl" 的值

我的问题是:
有可能吗?
如果不能,您能建议我另一种方法吗?
谢谢...

【问题讨论】:

  • 到目前为止您尝试过什么?你被困在哪里了? “我的 XML 文件的样式表”是什么意思?
  • okey 我有一个扩展名为 .xsl 的不同文件,例如 style1.xsl style2.xsl 和 style3.xsl
    我有一个名为 register.xml
    的 XML 文件想要做的是用不同的样式显示“register.xml”
    假设我有3个按钮,如果我点击第一个按钮,它将链接“style1.xsl”和“register.xml”,如果我单击第二个它将链接“style2.xsl”.....
  • 请将所有此类解释添加到问题本身,而不是评论部分
  • 欢迎来到 Stack Overflow。请edit问题包含错误消息的文本,因为该文本将是可搜索的,并可能让其他有相同问题的人找到此问题及其最终答案。

标签: php xml xslt


【解决方案1】:

考虑让 PHP 运行 XSLT 脚本,而不是修改浏览器呈现样式表的处理指令。

// LOAD XML SOURCE
$doc = new DOMDocument();
$doc->load('Input.xml');

// CONDITIONALLY SELECT XSLT SCRIPT
if (if(isset($_POST['button_1']))) {
    $selected_xsl = "/path/to/style1.xsl";

} elseif (if(isset($_POST['button_2']))) {
    $selected_xsl = "/path/to/style2.xsl";

} elseif (if(isset($_POST['button_3']))) {
    $selected_xsl = "/path/to/style3.xsl";

}   
$xsl = new DOMDocument();
$xsl->load($selected_xsl);

// INITIALIZE AND RUN TRANSFORMER
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); 
$newXML = $proc->transformToXML($doc);

// OUTPUT NEW XML TO SCREEN
header("Content-type: text/xml");
echo $newXML;

【讨论】:

  • 感谢您的回答,但它给了我以下错误:此页面包含以下错误:第 1 行第 6 列错误:文档末尾的额外内容

  • 已设置人员列表........

    可恢复的致命错误:DOMDocument 类的对象无法在 /var/www/html/xmlProject/controller/infoController.php29
    中转换为字符串
  • 我已经评论了 header("Content-type: text/xml") 并且它有效我不知道为什么....但是谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 2013-03-26
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多