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;
}
HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);
}
.
.
.
Эту
sort
— ей при щелчке на кнопке передается имя узла (например, «MASS»), по которому нужно провести сортировку. Вот как создаются различные кнопки, показанные на рис. 10.3: <INPUT ТУРЕ="BUTTON" ONCLICK="sort('NAME')" VALUE="Sort by name"></INPUT>
<INPUT TYPE="BUTTON" ONCLICK="sort('MASS')" VALUE="Sort by mass"></INPUT>
<INPUT TYPE="BUTTON" ONCLICK="sort('RADIUS')" VALUE="Sort by radius"></INPUT>
<INPUT TYPE="BUTTON" ONCLICK="sort('DAY')" VALUE="Sort by day"></INPUT>
Затем в функции
sort
я хочу выполнить новую сортировку по имени переданного узла. Для этого я изменяю атрибут select
элемента <xsl:sort>
на имя нового узла, по которому нужно сортировать. Вот как теперь выглядит атрибут select
. <xsl:apply-templates select="/PLANETS/PLANET">
<xsl:sort select="NAME" order="ascending"/>
</xsl:apply-templates>
Я могу обратиться к этому узлу из таблицы стилей, теперь хранимой в объекте
XSLDocument
, передав в метод selectSingleNode
упомянутого объекта выражение XPath. Метод selectSingleNode
возвращает объект node
, и можно изменить текстовое значение узла при помощи свойства nodeValue
объекта node
. В таком случае я только устанавливаю атрибут select в имя нового узла, по которому будет вестись сортировка: <HTML>
<HEAD>
<TITLE>
Applying Dynamic Styles
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function initialize {
.
.
.
}
function sort(sortNode) {
(XSLDocument.selectSingleNode("//xsl:sort/@select")).nodeValue
= sortNode;
.
.
.
}
</SCRIPT>
.
.
Теперь
<HTML>
<HEAD>
<TITLE>
Applying Dynamic Styles
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function initialize {
.
.
.
}
function sort(sortNode) {
(XSLDocument.selectSingleNode("//xsl:sort/@select")).nodeValue
= sortNode;
HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);
}
</SCRIPT>
</HEAD>
.
.
.
Операция завершена. Результаты показаны на рис. 10.3. При щелчке на кнопке таблица сортируется заново по выбранному значению узла (имейте в виду, что сортировка ведется по алфавиту; сортировка по числовым значениям обсуждается в главе 5, где описывается элемент
<xsl:sort>
) и отображается еще раз с новым порядком сортировки. Вот вся HTML-страница (листинг 10.3). Листинг 10.3. Применение динамических XSLT-преобразований
<HTML>
<HEAD>
<TITLE>
Applying Dynamic Styles
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
var XMLDocument;
var XSLDocument;
var HTMLtarget;
function initialize {
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;
Поделиться:
Популярные книги
Измена. Я отомщу тебе, предатель
1. Измены
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Сводный гад
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Мимик нового Мира 6
5. Мимик!
Фантастика:
юмористическая фантастика
попаданцы
рпг
5.00
рейтинг книги
Идеальный мир для Лекаря 2
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Начальник милиции
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Магия чистых душ
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Темный Патриарх Светлого Рода 4
4. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Стрелок
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
На границе империй. Том 6
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
Архил…? Книга 3
3. Архил...?
Фантастика:
фэнтези
попаданцы
альтернативная история
7.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Лорд Системы 11
11. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Черный Маг Императора 5
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний попаданец 2
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50