2012-10-12 103 views
0

我應該創建一個實際類型的簡單表與來自我們學校網站的xml文件的數據。我有XML和一個xsl樣式表,但無論我做什麼,表格都不會顯示。我也在其他瀏覽器中解析錯誤,而不是IE。不幸的是,我對XML不是很熟悉。我嘗試了一些php5方法,主要是使用simplexml,但無法讓它們正常工作。XML表不顯示 - 沒有行和列

任何暗示,爲什麼表不顯示和建議跨瀏覽器替代將不勝感激。

下面是XML文件的一個片段:

<?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> 
+1

獲得一致的跨瀏覽器解決方案的唯一方法是在服務器上進行轉換。試圖在客戶端上做是浪費時間 - 它太不穩定,太不靈活。如果你有PHP,請查看['XSLTProcessor'類](http://www.php.net/manual/en/class.xsltprocessor.php)。 – Tomalak

+0

感謝您的鏈接,Tomalak。我會研究這一點。 – Joschler

+0

@ 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); ?>' – Joschler

回答

0

從看你的XSLT,您使用的是傳統的命名空間HTTP: //www.w3.org/TR/WD-xsl這在IE9中是不支持的。

請參閱MSDN網站上的XSLT Compatability瞭解更多詳情。

嘗試將您的XSLT文件的名稱空間更改爲http://www.w3.org/1999/XSL/Transform並查看您的工作方式。

+0

謝謝蒂姆! 這種工作。該表格不會在IE9中顯示,但會在以前的版本中顯示,也會在Safari和Chrome中顯示。 我現在將使用這個,直到我設法做服務器端解決方案。 – Joschler