我有一个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> </xsl:text>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 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(我从来没有傻到试过它,所以我不知道它是否真的有效)。