【发布时间】:2013-11-08 21:14:00
【问题描述】:
我正在使用 XSLT 样式表将 EAD xml 文件转换为 web 上的 html 查找帮助(非常标准的做法)。
但是,我一直想在 Firefox 中通过引用 XML 文件顶部的样式表并使用浏览器打开 XML 文件来预览它。这是使用不同的样式表,但使用我想使用的样式表,我只得到错误:
加载样式表时出错:XPath 解析失败:需要名称或节点类型测试:
如果我可以获得更具体的错误日志记录,那就太好了,这样它就可以告诉我在 XSLT 文件中的哪个位置需要 Name 或 Nodetype 测试,但事实并非如此。
当我在 Oxygen XML 编辑器中打开样式表和 xml 文件并运行转换时,我得到了正确的 HTML 文档,所以我不知道如何调试它并弄清楚为什么它没有从 XML 呈现带有引用的样式表的文件。我更喜欢这种方式,因为它更适合我们的工作流程,只需将 XML 文件上传到 Web 服务器上与样式表相同的目录(而不是我必须转换 XML 文件并将 HTML 文件上传到服务器......你知道,Oxygen 编辑器的许可证并不便宜)。
是否有强制更多详细信息说明为什么在浏览器中失败?
【问题讨论】:
-
使用 Oxygen,在为浏览器开发时,请确保选择 XSLT 1.0 处理器,如 Saxon 6.5 或 Xalan。如果您使用 Oxygen、Saxon 9.5 和 XSLT 2.0 进行开发,那么像 Firefox 中的 XSLT 1.0 处理器当然会在代码中的任何 XPath/XSLT 2.0 构造上产生语法错误。
-
啊,我明白了。谢谢你。那么如果很多浏览器还在 XSLT 1.0 处理器上,是不是不能强制人们的浏览器去解析 XSLT 2.0 呢?是否有更好的方法来为用户断言 XSLT 2.0 转换(除了在客户端之外执行该过程......我们目前正在通过 Convio 运行我们的 XML,这似乎是一个无法定制的盒子)。如果你不确定也没关系。
-
浏览器一般只实现1.0。如果您想在浏览器中执行 XSLT 2.0,则必须使用 JavaScript 解决方案,例如 Saxon CE。
-
Saxonica 已将 XSLT 2.0 作为 Saxon-CE 引入浏览器,这是一个开源项目,源于将 Saxon 9 HE 交叉编译为 Javascript。这可能是一个选项saxonica.com/ce/index.xml。
-
@MartinHonnen:也许您可以将其中几个 cmets 放入答案中,以便我们可以将这个问题从“未回答”列表中删除?