我被告知要在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
答案 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>
会这样做。)