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 Потомок бога
4. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Тринадцатый II
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга третья
3. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Непереводимое в переводе
Научно-образовательная:
языкознание
5.00
рейтинг книги
Курс 1. Октябрь
2. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Последний Паладин. Том 9
9. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гусариум (сборник)
Фантастика:
альтернативная история
5.80
рейтинг книги
Агенты ВКС
3. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 7
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 13
13. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
фэнтези
5.00
рейтинг книги
В теле пацана 6
6. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Рубежник
1. Бедовый
Фантастика:
юмористическая фантастика
городское фэнтези
мистика
5.00
рейтинг книги
Память Света/Память огня (др. перевод)
14. Колесо Времени
Фантастика:
фэнтези
7.50