【发布时间】:2012-10-12 06:47:08
【问题描述】:
我应该用我们学校网站的 xml 文件中的数据创建一个实际上很简单的表。我有 XML 和 xsl 样式表,但无论我做什么,表格都不会显示。除了 IE,我还在其他浏览器中遇到解析错误。不幸的是,我对 XML 不是很熟悉。我尝试了一些 php5 方法,主要是使用 simplexml,但无法让它们正常工作。
任何关于为什么表格不显示的提示以及跨浏览器替代方案的建议将不胜感激。
这是 XML 文件的 sn-p:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="wftemplate1.xsl"?>
<databases filename="Classtests">
<database>
<row>
<column name="spalte1">Class</column>
<column name="spalte2">Subject</column>
<column name="spalte3">Teacher</column>
<column name="spalte4">Date</column>
</row>
</database>
<details>
<row>
<column name="spalte1">1A</column>
<column name="spalte2">D</column>
<column name="spalte3">ABC</column>
<column name="spalte4">11.11.2012</column>
</row>
<row>
<column name="spalte1"> </column>
<column name="spalte2"> </column>
<column name="spalte3">ABC</column>
<column name="spalte4">11.01.2013</column>
</row>
.
.
.
</details>
</databases>
这是当前的 xsl 样式表:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<!-- Überschrift -->
<div style="font-family:Verdana; font-size:14pt; font-weight:bold;">
<xsl:value-of select="databases/@filename" />
</div>
<p />
<!-- Beginn der Tabelle -->
<table border="1">
<!-- Kopfzeile -->
<xsl:for-each select="databases/database/row">
<tr>
<xsl:for-each select="column">
<td bgcolor="C0C0C0">
<div style="font-family:Verdana; font-size:9pt; font-weight:bold;">
<xsl:value-of select="." />
</div>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
<!-- Datenzeilen -->
<xsl:for-each select="databases/details/row">
<tr bgcolor="#80FFFF">
<xsl:for-each select="column">
<td>
<div style="font-family:Verdana; font-size:9pt;">
<xsl:value-of select="." />
</div>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
<p />
<div style="font-family:Verdana; font-size:7pt; font-weight:bold;">
Ende der Liste </div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
获得一致的跨浏览器解决方案的唯一方法是在服务器上进行转换。试图在客户端上做是浪费时间——它太不一致而且太不灵活。如果你有 PHP,请查看
XSLTProcessorclass。 -
感谢您的链接,Tomalak。我会调查的。
-
@Tim-C @Tomalak 你的回答成功了!非常感谢!命名空间更改后,我上传了一个带有少量代码的小 php 文件,它现在适用于所有浏览器。你摇滚 :-)
<?php $xslDoc = new DOMDocument(); $xslDoc->load("wftemplate1.xsl"); $xmlDoc = new DOMDocument(); $xmlDoc->load("aklistekd.xml"); $proc = new XSLTProcessor(); $proc->importStylesheet($xslDoc); echo $proc->transformToXML($xmlDoc); ?> -
我正要写这将是一个三线,但我想我会让你自己发现。
-
学习效果达到了!检查:-)
标签: xml xslt xml-parsing xmltable