html - 调试 'Error loading stylesheet: XPath parse failure: Name or Nodetype test expected:'

标签 html xml xslt xpath

我正在使用 XSLT 样式表将 EAD xml 文件转换为 html,在网络上查找帮助(相当标准的做法)。

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

Error loading stylesheet: XPath parse failure: Name or Nodetype test expected:

如果我能够获得更具体的错误日志记录,这样它就可以告诉我 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 与 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 .

关于html - 调试 'Error loading stylesheet: XPath parse failure: Name or Nodetype test expected:',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868608/

相关文章:

java - 如何将实体关系模型导出为 XML

xslt - 将一周中的短格式日期转换为 xslt 中的日期名称

xslt - 使用 XSLT 为命名空间添加前缀

javascript - 从 ASPX 后面的代码中显示/隐藏 div

html - 调整浏览器大小时如何使图像不与其他内容重叠

python - 找不到元素 'xml' 的声明

xml - 使用 xml namespace 进行 XSLT 转换 我想我错过了一些东西

javascript - 你如何找到伪元素的坐标?

javascript - 如何根据高度平移图像?

java - 如何将Drawable(ripple-drawable)设置为跨度的背景?