2

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

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

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

如果我可以获得更具体的错误日志记录,那就太好了,这样它就可以告诉我 XSLT 文件中的哪个位置需要 Name 或 Nodetype 测试,但事实并非如此。

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

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

4

2 回答 2

3

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 与 Saxon 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

于 2013-11-09T10:40:56.410 回答
1

来自浏览器内 XSLT 1.0 实现的错误报告通常很差;如果我是你,我会首先使用 1.0 实现检查样式表,该实现提供了良好的错误消息(例如,xsltproc 和 Saxon 6.5),然后(如果浏览器持续引发错误)使用通常的 needle-in-a-干草堆各种技术,试图找出问题出在哪里。如果您能找出问题出在哪里,但不知道为什么,那么在 Stack Overflow 或 Mulberry Technologies 的 xsl-list 上询问将是合乎逻辑的下一步。

于 2013-11-09T01:24:10.047 回答