我有以下XML
<?xml version='1.0' ?>
<?xml-stylesheet type='text/xsl' href='Transformations\style.xsl'?>
<test>
</test>
以及在Transformations
子文件夹中的样式表style.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:include href="Common.xsl"/>
<xsl:template match="/">
<HTML DIR="LTR">
<HEAD>
<TITLE>Test</TITLE>
</HEAD>
<BODY>
Just a test
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
和common.xsl
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
</xsl:stylesheet>
当我在Opera中打开XML时,它说
该文档的XSLT样式表无效。来自XSLT引擎的错误消息:
并且后面没有其他错误消息:
。它可以在IE和Firefox中使用。
可能是什么问题?
我已经尝试在Dragonfly和错误控制台中进行查找,但是没有任何帮助。
版本信息:
Opera 12.17
Windows 7 SP1 x64
使用Process Monitor来诊断问题,着眼于不成功的结果,我发现Common.xsl
没有找到。Opera查找文件的路径不包含该Transformations
文件夹。
这将我带到XML中的样式表路径:
<?xml-stylesheet type='text/xsl' href='Transformations\style.xsl'?>
用斜杠代替反斜杠可以解决此问题:
<?xml-stylesheet type='text/xsl' href='Transformations/style.xsl'?>
该问题似乎仅适用于包括在内common.xsl
。如果省略了include style.xsl
,则即使使用反斜杠,转换也只能使用。
正如在评论@IanRoberts提到,歌剧对待href
属性的URI和替换(无效)的文件名Transformations\style.xsl
通过Common.xsl
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句