使用XSLT作为主模板文件时通过PHP解析XML文件

使用XSLT作为主模板文件时通过PHP解析XML文件,php,xml,xslt,Php,Xml,Xslt,我有很多(500ish)xml文件来自旧的ASP和VBscript,它运行在旧的windows服务器上。用户可以单击一个链接下载请求的xml文件,或者单击一个链接查看xml文件导入到他们的系统后的外观 如果单击以查看输出,这将打开一个弹出窗口,如果xml文件名通过URL传递&使用xslt模板文件,这将显示输出 示例url=/transform.php?action=transform&xmlProtocol=AC_Audiology.xml 现在,我们正在使用PHP5 im试图获得类似于相同输出

我有很多(500ish)xml文件来自旧的ASP和VBscript,它运行在旧的windows服务器上。用户可以单击一个链接下载请求的xml文件,或者单击一个链接查看xml文件导入到他们的系统后的外观

如果单击以查看输出,这将打开一个弹出窗口,如果xml文件名通过URL传递&使用xslt模板文件,这将显示输出

示例url=/transform.php?action=transform&xmlProtocol=AC_Audiology.xml

现在,我们正在使用PHP5 im试图获得类似于相同输出的东西。 我们开始研究xslt_create();但这是php4中的一个旧函数

我正在寻找部署此功能的最佳方法

php主页面应该检查并捕获$_GET['xmlProtocol']值。 将其作为数据传递到xslt模板页面; 它将以html格式输出


在正确的方向上有一个大致的观点会很好

您可以在找到“新”XSL(T)扩展的文档(+示例)。

您可以在找到“新”XSL(T)扩展的文档(+示例)。

大约两年前我遇到过类似的问题。我使用的是PHP5,但需要使用xslt_create();或同等产品。最后,我转到PHP4

您可能可以将服务器设置为在任何地方使用PHP5,但特定文件夹中的文件除外。我相信这就是我所做的,这样我就可以使用PHP4处理XSL文件,但大多数网站仍然使用PHP5

在过去两年中,情况可能发生了变化,PHP5对xslt_create()之类的东西有更好的支持我没有关注最近的变化


希望这有帮助

大约两年前我也有过类似的问题。我使用的是PHP5,但需要使用xslt_create();或同等产品。最后,我转到PHP4

您可能可以将服务器设置为在任何地方使用PHP5,但特定文件夹中的文件除外。我相信这就是我所做的,这样我就可以使用PHP4处理XSL文件,但大多数网站仍然使用PHP5

在过去两年中,情况可能发生了变化,PHP5对xslt_create()之类的东西有更好的支持我没有关注最近的变化

希望这有帮助

php

//Transform.php

if(isset($_GET['action']) && $_GET['action'] == 'transform') {

    // obviously you would never trust the input and would validate first
    $xml_file = AFunctionValidateAndGetPathToFile($_GET['xmlProtocol']);

    // Load up the XML File
    $xmlDoc = new DOMDocument;
    $xmlDoc->load($xml_file);

    // Load up the XSL file
    $xslDoc = new DomDocument;
    $xslDoc->load("xsl_template_file.xsl");
    $xsl = new XSLTProcessor;
    $xsl->importStyleSheet($xslDoc);

    // apply the transformation
    echo $xsl->transformToXml($xmlDoc);
}
php

//Transform.php

if(isset($_GET['action']) && $_GET['action'] == 'transform') {

    // obviously you would never trust the input and would validate first
    $xml_file = AFunctionValidateAndGetPathToFile($_GET['xmlProtocol']);

    // Load up the XML File
    $xmlDoc = new DOMDocument;
    $xmlDoc->load($xml_file);

    // Load up the XSL file
    $xslDoc = new DomDocument;
    $xslDoc->load("xsl_template_file.xsl");
    $xsl = new XSLTProcessor;
    $xsl->importStyleSheet($xslDoc);

    // apply the transformation
    echo $xsl->transformToXml($xmlDoc);
}