XSLT
Шрифт:
XMLDocument.load('planets.xml');
if (XMLDocument.parseError.errorCode != 0) {
HTMLtarget.innerHTML = "Error!";
return false;
}
XSLDocument.validateOnParse = true;
XSLDocument.load('planets.xsl');
if (XSLDocument.parseError.errorCode != 0) {
HTMLtarget.innerHTML = "Error!";
return false;
}
.
.
.
Теперь,
planets.xml
и planets.xsl
, были загружены, преобразование можно осуществить методом transformNode
. Посмотрите, как я преобразую XMLDocument
при помощи XSLDocument
и показываю результат в элементе-приемнике <DIV>
: <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'];
.
.
.
HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);
return true;
}
</SCRIPT>
</HEAD>
<BODY onload="xslt">
<DIV ID="targetDIV">
</DIV>
</BODY>
</HTML>
Эти результаты показаны на рис. 10.1.
Рис. 10.1. Использование JavaScript для преобразования документа
Обработка ошибок разбора
При использовании JavaScript для загрузки документов XML и XSL и работы с ними важно знать, как сообщать об ошибках разбора. В предыдущем примере я сообщал об ошибках, выводя сообщение «Error!» в элементе-приемнике
<DIV>
документа HTML, но это не очень информативно. Как получить дополнительную информацию? В следующем примере я намерено создаю ошибку разбора, изменив первый тег
<PLANET>
в planets.xml
на тег <PLANETS>
: <?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="#"?>
<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;
Поделиться:
Популярные книги
Мимик нового Мира 4
3. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Повелитель механического легиона. Том III
3. Повелитель механического легиона
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Завод-3: назад в СССР
3. Завод
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кодекс Охотника. Книга ХХХ
30. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Отвергнутая невеста генерала драконов
5. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Тринадцатый
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Зеркало силы
3. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Лорд Системы 13
13. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга VI
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Первый среди равных
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Сердце Дракона. Том 10
10. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.14
рейтинг книги
Город Богов
1. Профсоюз водителей грузовых драконов
Фантастика:
юмористическая фантастика
детективная фантастика
попаданцы
5.00
рейтинг книги
Измена
Любовные романы:
современные любовные романы
5.38