在HTML中嵌入XML(与Firefox兼容)

时间:2011-10-19 04:21:09

标签: html xml xslt embed

我有一个XML文件(动态创建)和一个XSL样式表;如果我在Firefox中打开XML文件,我会得到一个很好的输出表。

但是,我想在 HTML页面中呈现此数据。我尝试过使用:

HTML文件:

<html>
  <body>
    <xml src="test_data.xml">
    </xml>
    </body>
</html>

但我无法得到任何东西。我的XML文件和我的XSL文件都在同一目录中。

我尝试从我的XSL输出中删除<html><body>,但仍然没有结果。

在线我已经读过IE和Firefox的一些方法不同;如何在Firefox中的HTML页面中呈现XML文件?


XML文件( test_data.xml ):

<?xml-stylesheet type="text/xsl" href="report_proteins.xsl"?>
<group_list>
    <protein_group>
        <protein name="A_1" />
        <protein name="A_2" />
    </protein_group>
    <protein_group>
        <protein name="B_1" />
    </protein_group>
    <protein_group>
        <protein name="C_1" />
        <protein name="C_2" />
        <protein name="C_3" />
    </protein_group>
</group_list>


XSL文件( report_proteins.xsl ):

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <h2>MAP proteins</h2>
    <table border="0">
      <tr>
        <th bgcolor="#E7FFCC">Group number</th>
        <th bgcolor="#D2FBFF">Proteins</th>
      </tr>
      <xsl:for-each select="group_list/protein_group">
        <tr>
          <td>
            <xsl:number />
          </td>
          <td>
          <xsl:for-each select="protein">
            <xsl:value-of select="@name"/><xsl:text>&#160;</xsl:text>
          </xsl:for-each>
          </td>
        </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

4 个答案:

答案 0 :(得分:4)

HTML中没有这样的xml节点,因此这就是它不起作用的原因。您根本不需要HTML文件。您的XSLT表生成一个完整的XHTML文档,如果您在浏览器中打开XML查找,浏览器应该能够呈现它。

您应该将XHTML命名空间添加到XSLT样式表。

答案 1 :(得分:1)

使用iframe元素。

<iframe src="test_data.xml"></iframe>

答案 2 :(得分:0)

您也可以将其包装在iframe标记内而不是xml标记中:

<html>
  <body>
    <iframe src="test_data.xml"></iframe>
    </xml>
    </body>
</html>

答案 3 :(得分:-2)

一般来说,不,网络浏览器不支持此功能。

您应该在服务器上进行转换,然后将html推送到浏览器。

我不推荐它,但如果你必须这样做客户端,请看看 http://goog-ajaxslt.sourceforge.net/据说在javascript中实现了xslt(我从来没有傻到试过它,所以我不知道它是否真的有效)。