Проблема применения xsl к xsd в опере - PullRequest
2 голосов
/ 03 марта 2011

Ну, мне сказали применить xsl на xsd. Хорошо. Но опера не позволяет этого.

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>

Если я вызываю sample.xsd на firefox, проблем нет. Выдает текст «образец».

Но если я позвоню из оперы, появится ошибка:

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 Ответ

4 голосов
/ 03 марта 2011

Строго говоря, ваш вывод включает в себя только один фрагмент текста (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> подойдет.)

...