【问题标题】:XML Table doesn't show - No rows nor columnsXML 表不显示 - 没有行也没有列
【发布时间】: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,请查看XSLTProcessor class
  • 感谢您的链接,Tomalak。我会调查的。
  • @Tim-C @Tomalak 你的回答成功了!非常感谢!命名空间更改后,我上传了一个带有少量代码的小 php 文件,它现在适用于所有浏览器。你摇滚 :-) &lt;?php $xslDoc = new DOMDocument(); $xslDoc-&gt;load("wftemplate1.xsl"); $xmlDoc = new DOMDocument(); $xmlDoc-&gt;load("aklistekd.xml"); $proc = new XSLTProcessor(); $proc-&gt;importStylesheet($xslDoc); echo $proc-&gt;transformToXML($xmlDoc); ?&gt;
  • 我正要写这将是一个三线,但我想我会让你自己发现。
  • 学习效果达到了!检查:-)

标签: xml xslt xml-parsing xmltable


【解决方案1】:

通过查看您的 XSLT,您正在使用 IE9 不支持的旧命名空间 http://www.w3.org/TR/WD-xsl

有关详细信息,请参阅 MSDN 网站上的 XSLT Compatability

尝试将您的 XSLT 文件的命名空间更改为 http://www.w3.org/1999/XSL/Transform,看看效果如何。

【讨论】:

  • 谢谢蒂姆!它有点奏效。该表格不会在 IE9 中显示,但它会在以前的版本以及 Safari 和 Chrome 中显示。我将暂时使用它,直到我设法完成服务器端解决方案。
猜你喜欢
  • 2017-08-02
  • 2012-06-16
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 2011-11-07
相关资源
最近更新 更多