Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

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;

Поделиться:
Популярные книги

Неудержимый. Книга VIII

Боярский Андрей
8. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
6.00
рейтинг книги
Неудержимый. Книга VIII

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I

Попаданка

Ахминеева Нина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка

Возлюби болезнь свою

Синельников Валерий Владимирович
Научно-образовательная:
психология
7.71
рейтинг книги
Возлюби болезнь свою

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Ротмистр Гордеев 2

Дашко Дмитрий
2. Ротмистр Гордеев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ротмистр Гордеев 2

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Жребий некроманта 3

Решетов Евгений Валерьевич
3. Жребий некроманта
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 3

Город драконов

Звездная Елена
1. Город драконов
Фантастика:
фэнтези
6.80
рейтинг книги
Город драконов

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец