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!
asked Oct 18, 2011 at 12:05
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♦
36.7k63 gold badges440 silver badges635 bronze badges
answered Oct 18, 2011 at 12:18
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 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
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
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!
asked Oct 18, 2011 at 12:05
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♦
36.7k63 gold badges440 silver badges635 bronze badges
answered Oct 18, 2011 at 12:18
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 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
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
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">&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. Вы не пытаетесь использовать объект
в таблице стилей, вы просто пытаетесь создать его. Поэтому, если вы удалите оператор DOCTYPE из таблицы стилей, вы ничего не потеряете.
Более того, в отличие от @Tim, DOCTYPE не должен объявлять объект nbsp
в выходном HTML, потому что он уже предопределен в HTML.
Наконец, я бы не согласился с @Tim на способ вывода неразрывного пробела в HTML. Отключить-вывод-экранирование — почти всегда неправильный подход, и он происходит из-за непонимания того, как работают синтаксический анализ и сериализация. Самый простой способ вывести неразрывный пробел в XSLT — напрямую использовать числовую сущность:
<div class="headerSeparator"> </div>
Это выведет неразрывный пробел.
«Но, — скажете вы, — я хочу, чтобы он выводил
!»
Это может случиться; когда output-method = «html», сериализация может использовать символьные сущности, встроенные в HTML, для выражения подобных символов. Или для сериализации можно использовать
или просто встроить неразрывный пробел напрямую. Все они являются законным HTML, и все они эквивалентны. Тогда возникает вопрос: почему вы хотите, чтобы он был сериализован как
, а не как какой-то другой эквивалент?
Если я неправильно понял, что вы пытаетесь сделать, поясните, где вы хотите разместить
и почему эта конкретная форма имеет значение.
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
������� XMLDocument
� true
(�������� �� ��������� � 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 |
|
||
Новичок Профиль Репутация: нет
|
С xslt 1.0 работал все что выводил через Firefox запуская XML в котором цепляется таблица XSLT 1.0 версии работает все норм. Это сообщение отредактировал(а) zeusakm — 25.10.2008, 22:21 |
||
|
|||
zeusakm |
|
||||
Новичок Профиль Репутация: нет
|
Так же XSL код:
Наверняка для профи в xml/xslt, эта проблема — не проблема и решить ее можно легко. Это сообщение отредактировал(а) zeusakm — 25.10.2008, 23:43 |
||||
|
|||||
zeusakm |
|
||
Новичок Профиль Репутация: нет
|
Ппц 35 просмотров и ни одного ответа?! Видимо действительно для России XSLT 2.0 слишком новая технология. =)) |
||
|
|||
JVM |
|
||
Бывалый Профиль Репутация: 4
|
Ну конечно. Особенно если учесть, что для преобразования XML использовать Firefox — его же в России пишут. |
||
|
|||
|
Правила форума «XML/XSLT» | |
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском — возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | XML, XSL | Следующая тема » |
Подписаться на тему |
Подписка на этот форум |
Скачать/Распечатать тему
[ Время генерации скрипта: 0.0980 ] [ Использовано запросов: 20 ] [ GZIP включён ]
Реклама на сайте
Информационное спонсорство