【问题标题】:Problem on applying xsl to xsd in opera在Opera中将xsl应用于xsd的问题
【发布时间】:2011-03-03 14:55:34
【问题描述】:

我被告知要在 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,就没有问题。它会生成文本“sample”。

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

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

【问题讨论】:

    标签: xslt xsd opera


    【解决方案1】:

    严格来说,您的输出仅包含一段文本 (sample),并且样式表未指定应输出文本,Opera 可能希望输出为 XML,当它不是有效的 XML 时会感到不安文件。

    尝试将&lt;xsl:output method="text" /&gt; 添加到样式表中,或者将&lt;xsl:text&gt;sample&lt;/xsl:text&gt; 包含在一个元素中,例如&lt;root&gt;&lt;xsl:text&gt;sample&lt;/xsl:text&gt;&lt;/root&gt;(请注意,在这种情况下&lt;xsl:text&gt; 元素实际上是多余的,&lt;root&gt;Sample&lt;/root&gt; 会这样做。)

    【讨论】:

    • 添加 解决了我的问题。谢谢你。我什至没有想到这一点
    • +1 正确答案。 Presto (Opera) 和 Webkit (Chrome, Safari) 重新解析xml 序列化方法的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多