在 HTML 中嵌入 XML(兼容 Firefox)
我有一个 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> </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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您还可以将其包装在 iframe 标记而不是 xml 标记内:
You could also wrap it inside an iframe tag instead of an xml tag:
一般来说,不,网络浏览器不支持这一点。
您可能应该在服务器上进行转换,并将 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).
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.
使用 iframe 元素。
Use iframe element.