2010-11-12 31 views
0

我最近一直在玩XML格式和XLST文件,因爲它似乎是一個UI問題的最直接的解決方案,我一直在摔跤,涉及用戶以不同的方式訪問中央數據。在我的實驗中,我創建了一個非常好的格式表,在Internet Explorer中看起來很棒。當我在Firefox中測試時,我始終得到相同的錯誤消息:爲什麼Firefox不能解析這個XSLT?

「加載樣式表時出錯:解析XSLT樣式表失敗。」

我試過把樣式表放到一個非常基本的文檔中,仍然遇到同樣的問題。我一直在檢查教程和其他webforums並模仿示例,但我似乎無法找到任何明確適用的內容。

這裏是我的測試XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="fox.xslt"?> 
<article> 
    <title>Making Excellent Pasta Sauce</title> 
    <synopsis>A simple recipe for an amazing sauce, with tips on getting that extra flavor.</synopsis> 
    <content>Here is my content.</content> 
    <tags> 
     <tag>sauce</tag> 
     <tag>recipes</tag> 
    </tags> 
</article> 

然後,這裏是我的XSLT文件(命名的,因爲你可能會從例如塊告訴上面, 「fox.xslt」

<?xml version="1.0" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> 
<xsl:template match="/"> 
<html> 
    <head> 
    </head> 
    <body> 
    <xsl:for-each select="article"> 
     TITLE: <xsl:value-of select="title"/> <BR/> 
     SYNOPSIS: <xsl:value-of select="synopsis"/> <BR/><BR/> 
    </xsl:for-each> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

。我懷疑它可能與 <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">有關,因爲我已經在示例中看到了與此有關的一些不同的事情,我在這裏嘗試了一些不同的值,並且似乎沒有碰到與此一起工作的一個例如,

我敢肯定這可能是一個基本問題,我只是在追查時一直不知所措。希望有人能把我帶到「前額拍攝時刻」。

在此先感謝!

回答

3

嘗試使用這種替代你的樣式表元素:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

您可能還需要補充一點:

xmlns="http://www.w3.org/1999/xhtml" 
+0

我應該說它也適用於'version =「1.0」'(或1.1)。主要問題可能是'xsl'命名空間。 – Bruno 2010-11-12 14:30:59

+0

問題**是XSLT命名空間。但你的回答錯過了解釋。名稱空間URI「http:// www.w3.org/TR/WD-xsl」被早期的M $ productos用於實現舊的XSLT工作草案。後來這已被棄用。現在沒有人抱怨XSLT處理器今天可以使用這個命名空間。 – 2010-11-12 14:45:43

+0

@Alejandro的確,但是我剛剛在Firefox 3.6上進行了測試,如果'version'屬性丟失,它也不起作用(所以這兩個問題都需要修復)。 – Bruno 2010-11-12 15:06:35

2

我覺得最有用使用一個單獨的工具來發現問題, FireFox(等)不會報告。安裝和使用,比如說,xsltproc命令,它提供了更多有用的結果。例如,我遇到了一個文件,其中Firefox的唯一響應是(可以選擇):「解析XSLT樣式表失敗」,或者在樣式表中版本= 1.1,「同樣無用」解析XSLT表達式失敗。 「

於是,我去了命令行和進入, ...」 xsltproc的bah.xsl humbug.xml」,那麼,很快,它就在那裏:

error 
xsltCompileStepPattern : ']' expected 
compilation error: file bah.xsl line 157 element template 
xsltCompilePattern : failed to compile 'ATOM[@STATE='GAS'' 

因此,我經常通過xsltproc或其等價物運行我的所有XML和XSL文件在將它們送到我友好的鄰居瀏覽器之前,它們「運行乾淨」。我還沒有找到任何瀏覽器,其中「優雅和信息豐富」處理XSLT問題。

另外,我覺得很坦率地說容易來看看命令的輸出(即HTML),說的是管道到了分頁更多命令,而不是試圖尋找它在瀏覽器中,直到我知道我非常接近我正在尋找的東西。如果我試圖在生成的(比如說)HTML輸出中發現問題,我真的不想首先將它看作「HTML」。如果XSL變換是「嘔吐廢話」(當然,起初他們,至少對我來說),瀏覽器試圖把它變成美麗的東西只是在找出樣式表中的錯誤。

相關問題