2012-11-29 39 views
1

我試圖修改和現有項目以添加一些功能。我想將一些參數傳遞給我的xsl樣式表,但任何參數的使用都會導致錯誤。我嘗試插入教程中找到的最簡單的例子等無濟於事。我相信這個問題可能與正在使用的xslt版本有關?使用<xsl:param>和<xsl:variable>在服務器上導致錯誤

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="VBScript"> 
    <xsl:param name="test">TEST</xsl:param> 

<xsl:template match="/"> 
    <xsl:value-of select="$test"></xsl:value-of> 
</xsl:template> 

</xsl:stylesheet> 

我已經刪除了所有其他代碼,以保持示例儘可能簡單。根據我的理解,這段代碼應該簡單地在HTML頁面上輸出TEST。不過,我得到的是一個典型的IIS錯誤:

An error occurred on the server when processing the URL. Please contact the system administrator. 

If you are the system administrator please click here to find out more about this error. 

沒有人有任何見解,爲什麼這是怎麼回事?當我嘗試以任何方式使用變量時,會發生同樣的問題。這是我的Web服務器的問題,還是使用了xslt的版本?

謝謝你的幫助!

+2

什麼是'language =「VBScript」'for? – xiaoyi

+0

什麼是服務器技術和XSLT處理器? IIS和MSXML? Apache/Tomcat和...? –

+0

'http:// www.w3.org/TR/WD-xsl'不是XSLT的正確命名空間URI,它應該是'http:// www.w3.org/1999/XSL/Transform',並且您需要在''元素上使用'version =「1.0」'(或'version =「2.0」')。 –

回答

0

在邁克爾凱的回答中,微軟可能會放棄對舊的傳統「http://www.w3.org/TR/WD-xsl」命名空間的支持,因此無法保證工作時間更長。這當然是對IE9的情況下,如在MSDN上解釋

http://msdn.microsoft.com/en-gb/library/ie/hh180178(v=vs.85).aspx

最近,我不得不改變是使用XSLT樣式表「http://www.w3.org/TR/WD-xsl」來讓它在IE9中工作。它可能只是一個簡單的例子,將其改爲使用「http://www.w3.org/1999/XSL/Transform」的正確名稱空間,但如果您使用的結構不是實際上在當前命名空間中受支持。這些都是我注意到的東西,是在原有一個支持,但不是在當前

  • XSL:申請模板有一個訂單由屬性。改爲 xsl:改爲
  • xsl:如果允許一個匹配屬性。將其替換爲test
  • xsl:eval被支持。這可能需要重新進行替換,取決於它的用途。
+0

構造廣泛用於調用用VBscript編寫的函數,並在同一個xsl樣式表的構造中定義。一些例子是一個函數檢索和增加菜單計數,以及獲取和設置cookie的函數。對於這些構建體,您有任何可行的替代建議嗎? – user1863929

+0

這個答案可能很有用:http://stackoverflow.com/questions/4551931/replacement-of-xsleval-and-xslscript-in-xsl。特別是,如果這隻能在Microsoft Windows操作系統上運行,那麼以下是一個MSDN頁面,可能會有所幫助:http://msdn.microsoft.com/zh-cn/library/ms256042.aspx –

1

花費一些時間查看是否沒有任何更好的錯誤消息潛伏在某個日誌文件中。我不知道IIS,但微軟的技術似乎有一個習慣,即生成大量的診斷信息,然後不告訴你它們在哪裏。

但xsl:stylesheet元素上的屬性language="VBScript"是一個錯誤,因此任何版本爲1.0或2.0的任何一致XSLT處理器都應該因此拒絕此樣式表。

WHOOPS:我只注意到你使用了xmlns:xsl="http://www.w3.org/TR/WD-xsl"。這意味着你根本沒有使用XSLT,而是使用了1998年推出的微軟專有的「工作草案XSL」語言,並在一年後變得過時。我認爲這種語言與XSLT有一些家族相似之處,但我認爲它仍然有效,但除了通過搜索二手書店之外,現在幾乎不可能獲得文檔。

+0

感謝您的信息,邁克爾。我遇到的確切問題是在這個「工作草案」上找到任何類型的文檔。 – user1863929

+0

什麼答案! –

相關問題