我正在使用XSLT样式表将EAD xml文件转换为Web上的html查找辅助工具(非常标准的做法)。
但是,我一直想在Firefox中通过引用XML文件顶部的样式表并使用浏览器打开XML文件来预览它。这是使用不同的样式表,但对于我想使用的样式表,我只得到错误:
加载样式表时出错:XPath解析失败:期望的名称或节点类型测试:
如果我可以获得更具体的错误记录,那将是非常好的,因此它可以告诉我在XSLT文件中它期望Name或Nodetype测试,但事实并非如此。
当我在Oxygen XML Editor中打开样式表和xml文件并运行转换时,我得到了正确的HTML文档,所以我不知道如何调试它并弄清楚它为什么不从XML渲染引用样式表的文件。我更喜欢这种方式,因为它更适合我们的工作流程,只需将XML文件上传到Web服务器上与样式表相同的目录(比我必须转换XML文件并将HTML文件上传到服务器...氧气编辑器的许可证并不便宜,你知道。
无论如何都要强制更多详细说明为什么在浏览器中失败?
答案 0 :(得分: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。
答案 1 :(得分:1)
来自浏览器内XSLT 1.0实现的错误报告通常很差;如果我是你,我首先检查样式表的1.0实现,提供良好的错误消息(例如,xsltproc和Saxon 6.5),然后(如果浏览器持续提出错误)通过使用通常的针 - in- a-干草堆的各种技术,试图找出问题出现的地方。如果您可以找出问题出现的 ,而不是为什么,那么在Stack Overflow或Mulberry Technologies的xsl-list上询问将是合乎逻辑的下一步