XSLT — страница 83 из 124

    XMLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');

    XSLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');

    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;

    }

    HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);

   }

   .

   .

   .

Эту часть вы уже видели раньше. Но пользователь теперь может отсортировать таблицу щелчком мыши по массе, радиусу и т.д. Для новой сортировки таблицы я написал функцию

sort
— ей при щелчке на кнопке передается имя узла (например, «MASS»), по которому нужно провести сортировку. Вот как создаются различные кнопки, показанные на рис. 10.3:

Затем в функции

sort
я хочу выполнить новую сортировку по имени переданного узла. Для этого я изменяю атрибут
select
элемента
на имя нового узла, по которому нужно сортировать. Вот как теперь выглядит атрибут
select
.

Я могу обратиться к этому узлу из таблицы стилей, теперь хранимой в объекте

XSLDocument
, передав в метод
selectSingleNode
упомянутого объекта выражение XPath. Метод
selectSingleNode
возвращает объект
node
, и можно изменить текстовое значение узла при помощи свойства
nodeValue
объекта
node
. В таком случае я только устанавливаю атрибут select в имя нового узла, по которому будет вестись сортировка:

</code></pre></p><p><pre><code>   Applying Dynamic Styles</code></pre></p><p><pre><code>

 .

 .


Теперь все, что осталось сделать, — снова выполнить преобразование и вывести результаты:

</code></pre></p><p><pre><code>   Applying Dynamic Styles</code></pre></p><p><pre><code>

 .

 .

 .

Операция завершена. Результаты показаны на рис. 10.3. При щелчке на кнопке таблица сортируется заново по выбранному значению узла (имейте в виду, что сортировка ведется по алфавиту; сортировка по числовым значениям обсуждается в главе 5, где описывается элемент

) и отображается еще раз с новым порядком сортировки. Вот вся HTML-страница (листинг 10.3).

Листинг 10.3. Применение динамических XSLT-преобразований

</code></pre></p><p><pre><code>   Applying Dynamic Styles</code></pre></p><p><pre><code>



На самом деле загрузить документы XML и XSL в Internet Explorer можно несколькими способами. Для создания объектов

XMLDocument
и
XSLDocument