»). Я также создам объект, соответствующий элементу
, который отображает результаты преобразования:
function xslt() {
var XMLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');
var XSLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');
var HTMLtarget = document.all['targetDIV'];
.
.
.
И planets.xml
, и planets.xsl
являются документами XML; и процессор MSXML может работать и как проверяющий на допустимость разборщик XML, если установить свойство validateOnParse
в true. Для загрузки planets.xml
и planets.xsl
в объекты XMLDocument
и XSLDocument
служит метод load
. Я также проверяю наличие ошибок, просматривая код ошибок разбора следующим образом:
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 = "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
и показываю результат в элементе-приемнике
:
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;
}
Эти результаты показаны на рис. 10.1.
Рис. 10.1.Использование JavaScript для преобразования документа
При использовании JavaScript для загрузки документов XML и XSL и работы с ними важно знать, как сообщать об ошибках разбора. В предыдущем примере я сообщал об ошибках, выводя сообщение «Error!» в элементе-приемнике
документа HTML, но это не очень информативно. Как получить дополнительную информацию?
В следующем примере я намерено создаю ошибку разбора, изменив первый тег в planets.xml
на тег :
Mercury
.0553
58.65
1516
.983
43.4
.
.
.
Я установил свойство validateOnParse
объекта XMLDocument
в true
(значение по умолчанию — false
, что означает отсутствие проверки), поэтому процессор MSXML отловит эту ошибку разбора. Объект XMLDocument
содержит объект parseError
, и если его свойство errorCode
не равно нулю, это означает наличие ошибки. Сейчас я хочу не просто вывести сообщение «Error!», а расшифровать ошибку при помощи новой функции getError
, которая возвращает строку с информацией о месте и причине ошибки.
С целый получения этой дополнительной информации я использую свойства
Листинг 10.1. Создание преобразования XSLT и отображение ошибок разбора
function xslt() {
var XMLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');
var XSLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');