Php 如何将XML/XSLT文档嵌入HTML页面

Php 如何将XML/XSLT文档嵌入HTML页面,php,html,xslt,embed,Php,Html,Xslt,Embed,我有一个使用PHP/CSS3/HTML5/MYSQL创建的网页,它工作正常:该软件能够管理内容、自定义菜单等等。 作为一个独立的项目,我有很多XML/XSLT格式的文档 我希望将文档包含到web内容中,因此理想的解决方案应该是将XML/XSLT文档嵌入到web中,但我不知道如何实现 一些可能的解决办法: 直接将XML包含到HTML文件中:这不起作用 用php解析XML/XSLT并将其插入HTML:它可以工作,但所有工作都在服务器端完成,这不是一个好主意 将XML/XSLT嵌入iframe,但为

我有一个使用PHP/CSS3/HTML5/MYSQL创建的网页,它工作正常:该软件能够管理内容、自定义菜单等等。 作为一个独立的项目,我有很多XML/XSLT格式的文档

我希望将文档包含到web内容中,因此理想的解决方案应该是将XML/XSLT文档嵌入到web中,但我不知道如何实现

一些可能的解决办法:

  • 直接将XML包含到HTML文件中:这不起作用
  • 用php解析XML/XSLT并将其插入HTML:它可以工作,但所有工作都在服务器端完成,这不是一个好主意
  • 将XML/XSLT嵌入iframe,但为内容设置iframe高度的唯一方法是使用Javascript,这似乎是一个丑陋的解决方案
  • 只使用XSLT重新编写整个web系统,这完全超出了我的时间表
将XSLT文档嵌入HTML页面的好方法是什么?有更好的解决办法吗

XML文档的简短示例:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="documentation.xsl"?>
<document>
    <header-1 title="Introduction">
        <p>Any text into the XML documentation</p>
    </header-1>
</document> 

我会用PHP解析它-这就是SimpleXML的用途::)PHP包含一个直接允许XSLT的模块:那么为什么不使用它呢?因为它是服务器的一个负载,所以我宁愿先问一下,以了解关于这个问题的更多意见。如果没有新的想法,我可能会使用PHP或iframe+javascript。您是否考虑过将它们本地转换为HTML,然后包括它们?如果文档没有更改,那么每次查看文档时都解析它们是愚蠢的。考虑将其转换为。。。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="utf-8" doctype-system="about:legacy-compat"/>
    <xsl:template match="//document">
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="header-1">
        <h1><xsl:value-of select="@title"/></h1><xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="p">
        <span><xsl:apply-templates/></span>
    </xsl:template>
</xsl:stylesheet>
<!DOCTYPE html>
<html>
    <header><title>Test</title></header>
    <body>
        Here the XML/XSLT should be included    
    </body>
</html>
$xsltProc = new xsltProcessor();
$xsl = new DOMDocument();
$xsl->load('documentation.xsl');
$xsltProc->importStyleSheet($xsl);
$doc = new DOMDocument();
$doc->load('test.xml');
echo $xsltProc->transformToXML($doc);