Xml 转换失败,没有错误消息
我有以下XMLXml 转换失败,没有错误消息,xml,xslt,opera,Xml,Xslt,Opera,我有以下XML <?xml version='1.0' ?> <?xml-stylesheet type='text/xsl' href='Transformations\style.xsl'?> <test> </test> 和common.xsl <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
<?xml version='1.0' ?>
<?xml-stylesheet type='text/xsl' href='Transformations\style.xsl'?>
<test>
</test>
和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和错误控制台中查找,但是什么都没有
版本信息:歌剧12.17
Windows 7 SP1 x64诊断问题,关注未成功的结果,我发现未找到
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在评论中提到的,Opera将
href
属性视为URI,并将(无效)文件名Transformations\style.xsl
替换为Common.xsl
href是URI,而不是文件路径,因此它需要是正斜杠。我怀疑发生的情况是,当您使用反斜杠时,浏览器能够加载style.xml
,但当它试图根据基本URI文件:/path/to/Transformations\style.xsl
解析相对URIcommon.xsl
时,它会得到文件:/path/to/common.xsl
(因为在URI规则下,to/
是URI中的最后一个目录段)。
<?xml-stylesheet type='text/xsl' href='Transformations/style.xsl'?>