在 HTML 中嵌入 XML(兼容 Firefox)

发布于 2024-12-10 19:38:33 字数 2017 浏览 0 评论 0原文

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

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

HTML 文件:

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

但我无法渲染任何内容。我的 XML 文件和 XSL 文件都位于同一目录中。

我尝试从 XSL 输出中删除 ,但仍然没有结果。

我在网上看到有些方法对于 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>

I have an XML file (dynamically created) and an XSL style sheet; if I open the XML file within Firefox, I get a nice table of output.

However, I want to render this data within an HTML page. I've tried using:

HTML file:

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

But I can't get anything to render. Both my XML file and my XSL file are in the same directory.

I've tried removing <html> and <body> from my XSL output, but still get no results.

Online I've read that some methods differ for IE and Firefox; how can I render an XML file within an HTML page in Firefox?


XML file (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 file (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> </xsl:text>
          </xsl:for-each>
          </td>
        </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只为守护你 2024-12-17 19:38:34

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

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

You could also wrap it inside an iframe tag instead of an xml tag:

<html>
  <body>
    <iframe src="test_data.xml"></iframe>
    </xml>
    </body>
</html>
月亮是我掰弯的 2024-12-17 19:38:34

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

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

我不推荐它,但如果你必须在客户端执行此操作,请看看
http://goog-ajaxslt.sourceforge.net/ 据称它在 javascript 中实现了 xslt (我已经从来没有愚蠢到尝试过,所以我不知道它是否真的有效)。

Generally speaking, no, this is not supported by web browsers.

You should probably do your transform on the server, and push html to the browser.

I don't recommend it, but if you must do this client-side, have a look at
http://goog-ajaxslt.sourceforge.net/ which supposedly implements xslt in javascript (I've never been foolish enough to try it, so I don't know if it actually works).

雪花飘飘的天空 2024-12-17 19:38:33

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

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

There is no such xml node in HTML, so that is the reason why it doesn't work. You don't need the HTML file at all. Your XSLT sheet generates a full XHTML document, and the browser should be able to render that as it is if you open the XML find in the browser.

You should add the XHTML namespace to the XSLT stylesheet.

暮年慕年 2024-12-17 19:38:33

使用 iframe 元素。

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

Use iframe element.

<iframe src="test_data.xml"></iframe>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文