Xslt 调用Xalan函数

Xslt 调用Xalan函数,xslt,xalan,Xslt,Xalan,在我尝试在XMLspy中调试的样式表中,我有以下行: xsl:for-each select="xalan:nodeset($Order)//Lines" 当我试图在XMLSpy中解析它时,我得到一个错误:“函数‘xalan:nodeset’未定义。”。我使用外部XSL转换,但我认为这还不够,我必须在样式表中定义它 如果您没有使用Xalan处理器(即使您使用),请使用更通用的-wherexmlns:exsl=”替换Xalan:nodeset()http://exslt.org/common“

在我尝试在XMLspy中调试的样式表中,我有以下行:

xsl:for-each select="xalan:nodeset($Order)//Lines"
当我试图在XMLSpy中解析它时,我得到一个错误:“函数‘xalan:nodeset’未定义。”。我使用外部XSL转换,但我认为这还不够,我必须在样式表中定义它


如果您没有使用Xalan处理器(即使您使用),请使用更通用的-where
xmlns:exsl=”替换
Xalan:nodeset()
http://exslt.org/common“


这是假设您使用的是XSLT1.0。如注释中所述,XSLT 2.0中不需要
node-set()
函数。

如果不使用Xalan处理器(即使使用),请将
Xalan:nodeset()
替换为更通用的-where
xmlns:exsl=”http://exslt.org/common“



这是假设您使用的是XSLT1.0。如注释中所述,XSLT 2.0中不需要
node-set()
函数。

如果要使用特定于Xalan的扩展函数,需要将XMLSpy配置为使用Xalan而不是其内置的XSLT处理器。另一方面,XMLSpy支持的XSLT 2.0和更高版本中根本不需要节点集函数,因此如果在XMLSpy中使用XSLT 2.0,您可以简单地将
xalan:nodeset($Order)//Lines
替换为
$Order//Lines
。您不需要也不能在自己的样式表中定义xalan节点集函数。如果您使用的是Xalan,并且已将前缀“Xalan”正确绑定到正确的名称空间,那么这应该足以使其正常工作。(当然,这与没有人相信您需要这个函数这一事实是不同的,因为在XSLT 2.0中它是不必要的。如果您确实有理由需要使用1.0,那么您必须明确地说您需要使用1.0——即使这样,我预测也没有人会相信您。)@C.M.Sperberg-McQueen很多人都必须使用XSLT1.0.@michael.hor257k我相信你,但我仍然预测不是每个人都会使用XSLT1.0.@michael.hor257k。我很想知道在什么情况下需要使用1.0。在Web浏览器中本机运行的样式表;Java不可用的环境。有什么其他的原因出现,我想知道吗?@ C.M.斯珀尔伯格-麦奎因考虑了一个内置XSLT 1引擎的应用程序——比如一些数据库或Adobe InDebug。如果你想使用XLAN特定的扩展函数,你需要配置XMLIST来使用XLAN而不是它内置的XSLT处理器。另一方面,XMLSpy支持的XSLT 2.0和更高版本中根本不需要节点集函数,因此如果在XMLSpy中使用XSLT 2.0,您可以简单地将
xalan:nodeset($Order)//Lines
替换为
$Order//Lines
。您不需要也不能在自己的样式表中定义xalan节点集函数。如果您使用的是Xalan,并且已将前缀“Xalan”正确绑定到正确的名称空间,那么这应该足以使其正常工作。(当然,这与没有人相信您需要这个函数这一事实是不同的,因为在XSLT 2.0中它是不必要的。如果您确实有理由需要使用1.0,那么您必须明确地说您需要使用1.0——即使这样,我预测也没有人会相信您。)@C.M.Sperberg-McQueen很多人都必须使用XSLT1.0.@michael.hor257k我相信你,但我仍然预测不是每个人都会使用XSLT1.0.@michael.hor257k。我很想知道在什么情况下需要使用1.0。在Web浏览器中本机运行的样式表;Java不可用的环境。有什么其他的原因出现,我想知道?例如,SybBer-McCube考虑了一个内置的XSLT 1引擎的应用程序——比如一些数据库或Adobe InDebug。实际上,对于Xalai,我使用的是外部的XSL程序:间谍:java. EXE-CP“D:\xAla\2.7.2\xAln.jar”Or.ApACH.xaln.xsLT.Purrin——% 1 -XSL % 3 -%% 2。还是在将xalan函数替换为exsl:node set之后,我得到了相同的错误。除了名称空间之外,我应该在xsl文件中还是在xmlspy本身中预定义它?xmlspy在“调试”XSLT时是否使用Xalan?@dcx您需要将正在使用的前缀(无论是
Xalan:
还是
exsl:
)绑定到名称空间。此声明需要在XSLT样式表中。@Michael您能用几句话描述一下如何定义它吗?我
已经添加了xmlns:exsl,但还有什么其他的,我应该这样做,调试器才能调用这个函数吗?当我升级xsl文件并将其用于电子邮件内容时,它在我的Web服务器中运行良好,但我无法在xmlspy中使用它。@Michael我应用了相同的方法,但仍然得到了这个结果。我开始怀疑我的XMLspy或Java是否有问题。我将尝试在其他电脑上检查这一点。实际上,对于xalan,我在Spy:java.exe-cp“d:\xalan\2.7.2\xalan.jar”org.apache.xalan.xslt.Process-in%1-xsl%3-out%2中使用了外部xsl程序。还是在将xalan函数替换为exsl:node set之后,我得到了相同的错误。除了名称空间之外,我应该在xsl文件中还是在xmlspy本身中预定义它?xmlspy在“调试”XSLT时是否使用Xalan?@dcx您需要将正在使用的前缀(无论是
Xalan:
还是
exsl:
)绑定到名称空间。此声明需要在XSLT样式表中。@Michael您能用几句话描述一下如何定义它吗?我
已经添加了xmlns:exsl,但还有什么其他的,我应该这样做,调试器才能调用这个函数吗?当我升级xsl文件并将其用于电子邮件内容时,它在我的Web服务器中运行良好,但我无法在xmlspy中使用它。@Michael我应用了相同的方法,但仍然得到了这个结果。我开始怀疑我的XMLspy或Java是否有问题。我会试着在其他电脑上检查一下。