【发布时间】:2016-01-28 18:08:18
【问题描述】:
在我尝试在 XMLspy 中调试的样式表中,我有以下行:
xsl:for-each select="xalan:nodeset($Order)//Lines"
当我尝试在 XMLSpy 中解析它时,我收到错误:'function 'xalan:nodeset' is not defined。我使用外部 XSL 转换,但我认为这还不够,我必须在我的样式表中定义它。
对于如何从样式表在我的笔记本电脑上本地调用此函数,我很感激。
【问题讨论】:
-
如果您想使用 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 很多人不得不使用 XSLT 1.0。
-
@michael.hor257k 我相信你,但我仍然预测不是每个人都会这样做。我很想知道什么情况下需要使用 1.0。在 Web 浏览器中本地运行的样式表; Java 不可用的环境。我想知道还有什么其他原因?
-
@C.M.Sperberg-McQueen 考虑具有内置 XSLT 1.0 引擎的应用程序 - 例如某些数据库或 Adobe InDesign。