调试"加载样式表时出错:XPath 解析失败:预期名称或节点类型测试:"



我正在使用XSLT样式表将EAD xml文件转换为Web上的html查找辅助工具(非常标准的做法)。

但是,我一直想通过引用XML文件顶部的样式表并使用浏览器打开XML文件来在Firefox中预览它。这是使用不同的样式表,但是对于我想使用的样式表,我只收到错误:

加载样式表时出错: XPath 解析失败: 预期名称或节点类型测试:

如果我能获得更具体的错误日志记录,那就太好了,这样它就可以告诉我在 XSLT 文件中的哪个位置需要名称或节点类型测试,但它没有。

当我在 Oxygen XML 编辑器中打开样式表和 xml 文件并运行转换时,我得到了正确的 HTML 文档,所以我不知道如何调试它并弄清楚为什么它没有从引用样式表的 XML 文件呈现。我更喜欢这种方式,因为它与我们的工作流程配合得更好,只需将 XML 文件上传到与样式表相同的网络服务器上的目录(而不是我必须转换 XML 文件并将 HTML 文件上传到服务器......你知道,Oxygen编辑器的许可证并不便宜)。

无论如何,是否有关于为什么在浏览器中失败的更多详细信息?

Oxygen允许您开发1.0、2.0和3.0版本的XSLT样式表。然而,当前浏览器中的 XSLT 处理器都是 XSLT 1.0 处理器。因此,如果您想使用 Oxygen 开发要在浏览器中部署的样式表,请确保编写 XSLT 1.0 版样式表并将 Oxygen 配置为使用 Saxon 6.5 或 Xalan(都是 XSLT 1.0 处理器)来运行和测试您的代码。

我怀疑您将 Oxygen 与 XSLT 9(XSLT 2.0 处理器)一起使用,因此如果您在代码中使用了任何仅 XSLT/XPath 2.0 构造,则在浏览器中会遇到错误。

例如,在 XSLT/XPath 2.0 中,您可以编写路径表达式中的最后一步是函数调用/root/foo/bar/tokenize(., '|');在 XSLT/XPath 1.0 中,这将给出错误。

然而,Saxonica将XSLT 2.0作为Saxon-CE引入浏览器,这是一个开源项目,由Saxon 9 HE交叉编译到Javascript的结果。这可能是一个选项,请参阅 http://saxonica.com/ce/index.xml。

浏览器内 XSLT 1.0 实现的错误报告通常很差;如果我是你,我会首先使用提供良好错误消息的 1.0 实现(例如,xsltproc 和 Saxon 6.5)检查样式表,然后(如果浏览器坚持引发错误)通过使用通常的大海捞针式技术来尝试找出问题出现的地方。 如果你能弄清楚问题出现在哪里,但不知道为什么,那么询问Stack Overflow或Mulberry Technologies的xsl列表将是合乎逻辑的下一步。

最新更新