我正在尝试修改现有项目以添加一些功能。我想将一些参数传递给我的xsl样式表,但任何参数的使用都会导致错误。我试过插入教程等中最简单的例子无济于事。我相信问题可能出在使用的xslt版本上?
<?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版本?
感谢您的帮助!
答案 0 :(得分:1)
可能值得花一些时间来查看某个日志文件中是否存在任何更好的错误消息。我不知道IIS,但微软的技术似乎习惯于产生大量的诊断信息,然后却没有告诉你它们的位置。
但是xsl:stylesheet元素上的属性language="VBScript"
是一个错误,任何符合版本1.0或2.0的符合XSLT的处理器都应该拒绝这个样式表。
WHOOPS:我刚注意到你使用了xmlns:xsl="http://www.w3.org/TR/WD-xsl"
。这意味着你根本就没有使用XSLT,而是微软专有的“工作草案XSL”语言,它们在1998年引入并且在一年之后就已经过时了。我相信,这种与XSLT有一些家族相似性的语言仍然有效,但现在几乎不可能获得有关它的文档,除非是通过二手书店搜索。
答案 1 :(得分:0)
根据Michael Kay的回答,微软可能会放弃对旧版“http://www.w3.org/TR/WD-xsl”命名空间的支持,因此无法保证更长时间的工作。对于IE9来说肯定是这种情况,如MSDN上所述
http://msdn.microsoft.com/en-gb/library/ie/hh180178(v=vs.85).aspx
我最近不得不更改一个使用“http://www.w3.org/TR/WD-xsl”的XSLT样式表,让它在IE9中运行。可能只是将其更改为使用“http://www.w3.org/1999/XSL/Transform”的正确名称空间的简单情况,但如果使用的结构不正确,则可能还需要进行更改。实际支持当前的命名空间。这些是我注意到的遗留内容中支持的内容,但不是当前的