=> Главная База Знаний Xslt Xslt и javascript в internet explorer


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 onload="xslt()">

  <DIV ID="targetDIV">

  </DIV>

 </BODY>

</HTML>

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

XSLT и JavaScript в Internet Explorer

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