【问题标题】:Embed XML in HTML (Firefox compatible)在 HTML 中嵌入 XML(兼容 Firefox)
【发布时间】:2011-10-19 04:21:09
【问题描述】:

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

但是,我想在一个 HTML 页面中呈现这些数据。我试过使用:

HTML 文件:

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

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

我尝试从我的 XSL 输出中删除 &lt;html&gt;&lt;body&gt;,但仍然没有得到任何结果。

网上我读到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>

【问题讨论】:

    标签: html xml xslt embed


    【解决方案1】:

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

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

    【讨论】:

    • 我相信@Oliver 是在询问如何在其他 html 中呈现转换结果,而不是如何将转换后的 xml 呈现为整个 html 页面。
    • 将 html 元素添加到 XSLT 表单后,Oliver 将得到他想要的。我想我确实解决了无法使用 xml 元素包含结果的问题。
    • 这有点奇怪,因为我想先用 Django 转换 XML 模板,然后交付它,但我只是从 python 中的 XSLT 表渲染并交付 HTML 结果。感谢您的帮助!
    【解决方案2】:

    使用 iframe 元素。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • Firefox 和 IE 都支持 XSLT。
        猜你喜欢
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 2011-07-25
        • 2018-07-12
        • 2012-10-25
        • 1970-01-01
        相关资源
        最近更新 更多