Проверка преобразования xslt ошибка как исправить

This is my xml file: Hello World! And t...

This is my xml file:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="hello.xsl"?>
<message>
    <greeting>Hello World!</greeting>
</message>

And this is my xsl file:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/Transform">
<xsl:template match="/">
<html>
<body>
<h1><xsl:value-of select="message/greeting"/></h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

When I run the xml file in firefox it gives «Error loading stylesheet: Parsing an XSLT stylesheet failed.» error. I am new to xml please can anyone tell me what is the error. And can you tell me a way to find the error. Thanks!

Kirill Polishchuk's user avatar

asked Oct 18, 2011 at 12:05

Jayanga Kaushalya's user avatar

3

You have specified a wrong namespace for XSL:

xmlns:xsl="http://www.w3.org/1999/xsl/Transform"

Instead, you must use:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

Remember that XML is case-sensitive.

KyleMit's user avatar

KyleMit

36.7k63 gold badges440 silver badges635 bronze badges

answered Oct 18, 2011 at 12:18

Dimitre Novatchev's user avatar

Dimitre NovatchevDimitre Novatchev

239k26 gold badges293 silver badges427 bronze badges

2

Change namespace declaration to

http://www.w3.org/1999/XSL/Transform

answered Oct 18, 2011 at 12:15

Kirill Polishchuk's user avatar

Kirill PolishchukKirill Polishchuk

54k10 gold badges123 silver badges125 bronze badges

Upping the xsl stylesheet version number from 1.0 to 1.1 worked for me.

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/xsl/Transform">

answered Sep 5, 2012 at 8:23

darryn.ten's user avatar

I had a same problem as you. Finally I found out my solution.

The solution is that open the xsl file with your browser(in my case firefox) and the error may occurs and fix the error.

In my cases, missing an / slashes in the body tag.

answered Apr 12, 2016 at 12:23

lawrence's user avatar

lawrencelawrence

1511 silver badge8 bronze badges

This is my xml file:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="hello.xsl"?>
<message>
    <greeting>Hello World!</greeting>
</message>

And this is my xsl file:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/Transform">
<xsl:template match="/">
<html>
<body>
<h1><xsl:value-of select="message/greeting"/></h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

When I run the xml file in firefox it gives «Error loading stylesheet: Parsing an XSLT stylesheet failed.» error. I am new to xml please can anyone tell me what is the error. And can you tell me a way to find the error. Thanks!

Kirill Polishchuk's user avatar

asked Oct 18, 2011 at 12:05

Jayanga Kaushalya's user avatar

3

You have specified a wrong namespace for XSL:

xmlns:xsl="http://www.w3.org/1999/xsl/Transform"

Instead, you must use:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

Remember that XML is case-sensitive.

KyleMit's user avatar

KyleMit

36.7k63 gold badges440 silver badges635 bronze badges

answered Oct 18, 2011 at 12:18

Dimitre Novatchev's user avatar

Dimitre NovatchevDimitre Novatchev

239k26 gold badges293 silver badges427 bronze badges

2

Change namespace declaration to

http://www.w3.org/1999/XSL/Transform

answered Oct 18, 2011 at 12:15

Kirill Polishchuk's user avatar

Kirill PolishchukKirill Polishchuk

54k10 gold badges123 silver badges125 bronze badges

Upping the xsl stylesheet version number from 1.0 to 1.1 worked for me.

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/xsl/Transform">

answered Sep 5, 2012 at 8:23

darryn.ten's user avatar

I had a same problem as you. Finally I found out my solution.

The solution is that open the xsl file with your browser(in my case firefox) and the error may occurs and fix the error.

In my cases, missing an / slashes in the body tag.

answered Apr 12, 2016 at 12:23

lawrence's user avatar

lawrencelawrence

1511 silver badge8 bronze badges

Я использую DITA OT для преобразования XML в xhtml. Мой xsl выглядит как

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE some_name [ 
<!ENTITY nbsp " "> 
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:saxon="http://icl.com/saxon" extension-element-prefixes="saxon">


 <xsl:import href="../map2xhtmtoc.xsl"/>
 <!--<xsl:import href="result-doc.xsl"/>-->
 <!--<xsl:import href="custom-ecollege-dita2xhtml.xsl"/>-->
 <xsl:output name="html" method="html" indent="yes" encoding="UTF-8"/>

 <!-- Define a newline character -->
 <xsl:variable name="newline">
  <xsl:text>
  </xsl:text>
 </xsl:variable>

 <xsl:template match="/">
    <html>
    <head>
      <body>
          <xsl:apply-templates select="myProduct"/>
      </body>
    </head>
    </html>
 </xsl:template>
 <!--other templates goes here-->
 <div class="floatRight"/>
 <div class="headerSeparator">
  <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
 </div>
 </xsl:template>

 </xsl:stylesheet>

Теперь, если я попытался выполнить этот xsl против моего xml для преобразования xhtml, используя DITA OT jar cmd.

java -jar .libdost.jar /i:samples/mycompany/myContent/myContent.ditamap /transtype:xhtml /xsl:xsl/mycompany/custom-map2xhtml.xsl

После выполнения указанной выше команды я получаю следующую ошибку.

[xslt] D:DITA-OT1.5.2xslmycompanycustom-map2xhtm.xsl:21: Fatal Error! When 'standalone' or 'doctype-system' is specified, the document must be well-formed; but this document contains a top-level text node
[xslt] Failed to process null

Я ломаю себе голову, чтобы узнать, почему возникает эта ошибка.

Спасибо.

2 ответа

Лучший ответ

this document contains a top-level text node

Вы можете показать нам конец таблицы стилей XSLT? Есть ли текст после последнего </xsl:stylesheet>? Это могло бы вызвать эту ошибку.

Обновить

Как заметил Димитр, начальный / конечный теги <xsl:template> несбалансированы, поэтому, если вы не показываете только часть своего XSLT, это необходимо исправить.

Однако я согласен с @Tim C, что вам, вероятно, вообще не нужно объявление DOCTYPE в вашем XSLT. Вы не пытаетесь использовать объект &nbsp; в таблице стилей, вы просто пытаетесь создать его. Поэтому, если вы удалите оператор DOCTYPE из таблицы стилей, вы ничего не потеряете.

Более того, в отличие от @Tim, DOCTYPE не должен объявлять объект nbsp в выходном HTML, потому что он уже предопределен в HTML.

Наконец, я бы не согласился с @Tim на способ вывода неразрывного пробела в HTML. Отключить-вывод-экранирование — почти всегда неправильный подход, и он происходит из-за непонимания того, как работают синтаксический анализ и сериализация. Самый простой способ вывести неразрывный пробел в XSLT — напрямую использовать числовую сущность:

<div class="headerSeparator"> </div>

Это выведет неразрывный пробел.

«Но, — скажете вы, — я хочу, чтобы он выводил &nbsp;

Это может случиться; когда output-method = «html», сериализация может использовать символьные сущности, встроенные в HTML, для выражения подобных символов. Или для сериализации можно использовать   или просто встроить неразрывный пробел напрямую. Все они являются законным HTML, и все они эквивалентны. Тогда возникает вопрос: почему вы хотите, чтобы он был сериализован как &nbsp;, а не как какой-то другой эквивалент?

Если я неправильно понял, что вы пытаетесь сделать, поясните, где вы хотите разместить &nbsp; и почему эта конкретная форма имеет значение.


3

LarsH
20 Окт 2011 в 01:10

Это может быть связано с объявлением DOCTYPE вверху страницы. Это также может быть текстовый узел верхнего уровня, на который указывает ошибка.

Вы хотите, чтобы DOCTYPE отображался в создаваемом HTML? Если это так, его, вероятно, следует удалить с того места, где он находится, и в вашем первом шаблоне выполните следующие действия:

<xsl:template match="/">
   <xsl:text disable-output-escaping = "yes"><![CDATA[
      <!DOCTYPE some_name [  <!ENTITY nbsp " ">  ]> 
   ]]>
   </xsl:text>

Затем, когда XSLT преобразован, он выдаст следующий

<!DOCTYPE some_name [  <!ENTITY nbsp " ">  ]> 
<html>


0

Tim C
19 Окт 2011 в 15:32

��������� ������ �������

��������� ������ �������

��� ������������� JavaScript ��� �������� ���������� XML � XSL � ������ � ���� ����� �����, ��� �������� �� ������� �������. � ���������� ������� � ������� �� �������, ������ ��������� �Error!� � ��������-��������� <DIV> ��������� HTML, �� ��� �� ����� ������������. ��� �������� �������������� ����������?�

� ��������� ������� � �������� ������ ������ �������, ������� ������ ��� <PLANET>planets.xml �� ��� <PLANETS>:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS>
�<PLANETS>
� <NAME>Mercury</NAME>
��<MASS UNITS="(Earth = 1)">.0553</MASS>
��<DAY UNITS="days">58.65</DAY>
��<RADIUS UNITS="miles">1516</RADIUS>
��<DENSITY UNITS="(Earth = 1)">.983</DENSITY>
��<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B ���������-->
�</PLANET>
�.
�.
�.

� ��������� �������� validateOnParse ������� XMLDocumenttrue (�������� �� ��������� � false, ��� �������� ���������� ��������), ������� ��������� MSXML ������� ��� ������ �������. ������ XMLDocument �������� ������ parseError, � ���� ��� �������� errorCode �� ����� ����, ��� �������� ������� ������. ������ � ���� �� ������ ������� ��������� �Error!�, � ������������ ������ ��� ������ ����� ������� getError, ������� ���������� ������ � ����������� � ����� � ������� ������.

� ����� ��������� ���� �������������� ���������� � ��������� �������� <url, line, linepos � reason ������� parseError ��� ����, ����� ���������� ��������� �������� ����, ������, ������� ������ � �� �������� (������� 10.1).�

������� 10.1. �������� �������������� XSLT � ����������� ������ �������

<HTML>
�<HEAD>
� <TITLE>XSLT Using JavaScript</TITLE>
�� <SCRIPT LANGUAGE="JavaScript">
��� function xslt() {
��� var XMLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');
�� �var XSLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');
�� �var HTMLtarget = document.all['targetDIV'];
��� XMLDocument.validateOnParse = true;
��� XMLDocument.load('planets.xml');
�� �if (XMLDocument.parseError.errorCode != 0) {
��� �HTMLtarget.innerHTML = getError(XMLDocument);
��� �return false;
��� }
��� XSLDocument.validateOnParse = true;
�� �XSLDocument.load('planets.xsl');
�� �if (XSLDocument.parseError.errorCode != 0) {
��� �HTMLtarget.innerHTML = getError(XSLDocument);
��� �return false;
��� }
��� HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);
�� �return true;
�� }
�� function getError(errorObject) {
��� var Error = new String;
��� Error = "Error. " + errorObject.parseError.url + "<BR>" +
��� �"Line: " + errorObject.parseError.line + "<BR>" +
���� "Character: " + errorObject.parseError.linepos + "<BR>" +
�� ��"Description: " + errorObject.parseError.reason;
�� �return Error;
�� }
� </SCRIPT>
�</HEAD>
�<BODY>
��<DIV>
��</DIV>
�</BODY>
</HTML>

��������� ����� ������� �� ���. 10.2, ��� �������� ��������� ������ ����, ����� ������ � �������� ������ ����������� MSXML. ���� �� ����������� ������������� �������������� XSLT � Internet Explorer, ����� ������������ ������������� ���� ��������� ��������� �������, ��������� �������� ������ ������� ������������� �����.

���. 10.2. ��������� ������ �������

���� ��� � �������������� ��� ������ ���������� MSXML ������ �������� �������, �� ����� � ��� ���������� ����������� ������ ������������. ��������, � ��������� ������� � ������������ XSLT � Internet Explorer ��� ���������� ������ ������ � HTML-������� �� ������� ������. ��� ����� � ���� ���������� � ��������� ����� ������ ������� ������.


Форум программистов Vingrad

Новости ·
Фриланс ·
FAQ

Правила ·
Помощь ·
Рейтинг ·
Избранное ·
Поиск ·
Участники

Форум -> Технологии и алгоритмы -> XML, XSL

Модераторы: diadiavova

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> XSLT 2.0 Ошибка преобразования!!! Браузер выводит ошибку преобразования 

:(

   

Опции темы

zeusakm
Дата 25.10.2008, 21:10 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.6.2008

Репутация: нет
Всего: нет

С xslt 1.0 работал все что выводил через Firefox запуская XML в котором цепляется таблица XSLT 1.0 версии работает все норм.
Тут попробовал то же самое с XSLT 2.0 ничего не выходит — пишет: 
Ошибка при XSLT преобразовании: Ошибка преобразования XSLT.
код XML такой:

Это сообщение отредактировал(а) zeusakm — 25.10.2008, 22:21

PM MAIL   Вверх
zeusakm
Дата 25.10.2008, 22:14 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.6.2008

Репутация: нет
Всего: нет

Код

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="nodes.xsl"?>
<doc>
    <heading>Oksana heading!!!</heading>
    <para>1.1</para>
    <para>1.2</para>
    <para>1.3</para>
    <heading>Arthur heading programmer</heading>
    <para>1.4</para>
    <para>1.5</para>
    <para>1.6</para>
    <heading>All other famalyes</heading>
    <para>1.7</para>
    <para>1.8</para>        
</doc>

Так же XSL код:

Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
        <xsl:template match="/doc">
            <xsl:for-each-group select="*" group-starting-with="heading">
                <xsl:apply-templates select="current-group()[self::para]"/>
            </xsl:for-each-group>
        </xsl:template>
    </xsl:stylesheet>

Наверняка для профи в xml/xslt, эта проблема — не проблема и решить ее можно легко. 
Так что буду рад Вашей поддержке =)

Это сообщение отредактировал(а) zeusakm — 25.10.2008, 23:43

PM MAIL   Вверх
zeusakm
Дата 26.10.2008, 10:16 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.6.2008

Репутация: нет
Всего: нет

Ппц 35 просмотров и ни одного ответа?! Видимо действительно для России XSLT 2.0 слишком новая технология. =)) 

PM MAIL   Вверх
JVM
Дата 26.10.2008, 15:40 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: 4
Всего: 5

Ну конечно. Особенно если учесть, что для преобразования XML использовать Firefox — его же в России пишут.

PM MAIL   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «XML/XSLT»
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском — возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »

Подписаться на тему |
Подписка на этот форум |
Скачать/Распечатать тему

[ Время генерации скрипта: 0.0980 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]

Реклама на сайте
   
Информационное спонсорство

Понравилась статья? Поделить с друзьями:
  • Проверка предложений на пунктуационные ошибки
  • Проверка подписи сертификатом пользователя ошибка при подписи данных
  • Проверка памяти на ошибки windows 10 результаты где смотреть
  • Проверка памяти на ошибки windows 10 memtest
  • Проверка памяти видеокарты nvidia на ошибки