Вход/Регистрация
XSLT
вернуться

Холзнер Стивен

Шрифт:

В качестве первого шага в создании нужной нам HTML-страницы я загружу

planets.xml
и требуемую таблицу стилей и выполню сортировку по умолчанию, то есть по названию планет:

<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;

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>

  • Читать дальше
  • 1
  • ...
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: