2012-11-29 21 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

什么答案! –

相关问题