Книга: XSLT

XSLT и JavaScript в Internet Explorer

XSLT и JavaScript в Internet Explorer

Любите вы Microsoft или нет, нельзя отрицать тот факт, что эта фирма включает в Internet Explorer все больше средств поддержки XSLT (дополнительную информацию можно найти по адресу http://msdn.microsoft.com/xml/general/xmlparser.asp), и поэтому работа с браузером заслуживает нашего внимания. В главе 1 я представил пример создания преобразований XSLT в Internet Explorer при помощи JavaScript, и здесь мы рассмотрим этот пример подробнее. Как вы помните (см. главу 2), IE версии 5.5 и младше может осуществлять настоящие преобразования XSLT, если они реализованы на JavaScript (новый, только что вышедший IE 6.0 может разбирать непосредственно синтаксис XSLT просто путем просмотра XML-документов).

В этом случае я, пользуясь MSXML и JavaScript, преобразую planets.xml при помощи planets.xsl. Для хранения этих документов я создаю два новых объекта, XMLDocument и XSLDocument, опираясь на классы ActiveXObject и DOMDocument процессора MSXML в функции xslt. (Эта функция запускается сразу при загрузке страницы, поскольку я установил атрибут onload элемента <BODY> в «xslt()»). Я также создам объект, соответствующий элементу <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'];
    .
    .
    .

И planets.xml, и planets.xsl являются документами XML; и процессор MSXML может работать и как проверяющий на допустимость разборщик XML, если установить свойство validateOnParse в true. Для загрузки planets.xml и planets.xsl в объекты XMLDocument и XSLDocument служит метод load. Я также проверяю наличие ошибок, просматривая код ошибок разбора следующим образом:

<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 = "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>
  <DIV>
  </DIV>
 </BODY>
</HTML>

Эти результаты показаны на рис. 10.1.


Рис. 10.1. Использование JavaScript для преобразования документа

Оглавление книги


Генерация: 0.690. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз