在opera中将xsl应用于xsd的问题

时间:2011-03-03 14:55:34

标签: xslt xsd opera

我被告知要在xsd上应用xsl。好。但歌剧并不允许这样做。

Xsd文件:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="sammple.xsl" type="text/xsl" ?>
<xs:schema elementFormDefault="qualified"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="global" type="globaltype"/>
</xs:schema>

Xsl文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xsl:template match="xs:element[@name='global']">
       <xsl:text>sample</xsl:text>
    </xsl:template>

    <xsl:template match="/" name="main">
       <xsl:apply-templates />
    </xsl:template>
</xsl:stylesheet>

如果我在firefox上调用sample.xsd,则没有问题。它产生文本“样本”。

但如果我从歌剧中调用它,就会出现错误:

  

This document had an invalid XSLT stylesheet. Error message from the XSLT engine: Error: invalid XML output: unexpected text (non-whitespace text outside root element)

我该怎么办?

修改:我的环境:

Opera:版本11.01
Firefox:版本3.6.13
Http服务器:lighttpd 1.4.28

1 个答案:

答案 0 :(得分:4)

严格地说,您的输出只包含一段文本(sample),并且样式表没有指定应该输出文本,Opera可能期望输出为XML并且当它不是有效的XML文档。

尝试将<xsl:output method="text" />添加到样式表中,或将<xsl:text>sample</xsl:text>括在元素中,例如<root><xsl:text>sample</xsl:text></root>(请注意,<xsl:text>元素在此实例中实际上是多余的, <root>Sample</root>会这样做。)