Чтение онлайн

на главную

Жанры

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

Шрифт:

XSLDocument load('planets.xsl');

if (XSLDocument.parseError.errorCode != 0) {

HTMLtarget.innerHTML = "Error!";

return false;

}

HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);

}

function sort(sortNode) {

(XSLDocument.selectSingleNode("//xsl:sort/@select")).nodeValue

= sortNode;

HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);

}

</SCRIPT>

 </HEAD>

 <BODY ONLOAD="initialize">

<CENTER>

<DIV ID="targetDIV"></DIV>

<BR>

<BR>

<INPUT TYPE="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>

</CENTER>

 </BODY>

</HTML>

На

самом деле загрузить документы XML и XSL в Internet Explorer можно несколькими способами. Для создания объектов
XMLDocument
и
XSLDocument
я использовал класс ActiveXObject, но эти объекты можно создавать и непосредственно обращаясь к содержащим документы XML объектам ActiveX по идентификатору класса, хранимому в реестре Windows. В следующем примере я таким образом загружу
planets.xml
и
planets.xsl
в
XMLDocument
и
XSLDocument
:

XMLDocument = document.all['XMLdoc'];

XSLDocument = document.all['XSLdoc'];

XMLDocument.load('planets.xml');

XSLDocument.load(' planets.xsl');

.

.

.

<OBJECT ID="XMLdoc" WIDTH="0" HEIGHT="0"

 CLASSID="clsid:f5078f32-c551-11d3-89b9-0000f81fe221">

</OBJECT>

<OBJECT ID="XSLdoc" WIDTH="0" HEIGHT="0"

 CLASSID="clsid:f5078f32-c551-11d3-89b9-0000f81fe221">

</OBJECT>

Эта техника не так надежна, как использование класса

ActiveXObject
, поскольку идентификаторы классов могут различаться в разных версиях Internet Explorer. (Приведены идентификаторы классов для Internet Explorer 5.5). Но есть еще один способ загрузить документы XML и XSL в Internet Explorer — при помощи участков (island) XML.

Internet Explorer и участки данных XML

В Internet Explorer есть специальный тег

<XML>
, при помощи которого можно создавать участки (island) XML. Участок XML может содержать либо сам код XML, либо ссылку
на XML-документ.

Участки XML упрощают загрузку документов XML и XSL, поэтому их стоит здесь рассмотреть. В следующем примере я создаю два участка XML,

sourceDocument
и
stylesheet
, и загружаю
planets.xml
и
planets.xsl
, просто обратившись к ним через атрибут
src
:

<HTML>

 <HEAD>

<TITLE>

The Planets Table

</TITLE>

<XML id="sourceDocument" src="planets.xml"></XML>

<XML id="stylesheet" src="planets.xsl"></XML>

.

.

.

Теперь для осуществления XSLT-преобразования мне нужно только применить, как и раньше, метод

transformNode
и присвоить результаты элементу
<DIV>
, чтобы вывести их (листинг 10.4).

Листинг 10.4. Загрузка документов XML и XSL при помощи участков XML

<HTML>

 <HEAD>

<TITLE>

The Planets Table

</TITLE>

<XML id="sourceDocument" src="planets.xml"></XML>

<XML id="stylesheet" src="planets.xsl"></XML>

<SCRIPT FOR="window" EVENT="onload">

targetDIV.innerHTML =

sourceDocument.transformNode(stylesheet.XMLDocument);

</SCRIPT>

 </HEAD>

 <BODY>

<CENTER>

<DIV id="targetDIV"></DIV>

</CENTER>

 </BODY>

</HTML>

Вот и все. Заметьте, что по умолчанию Internet Explorer 5.5 и младше использует устаревший процессор XSLT, как обсуждалось в главе 2 (если специально не установить процессор MSXML3 в режиме замены или IE 6.0, о чем также говорилось в главе 2). Если вы работаете с IE 5.5 или младше, у вас в распоряжении таблица стилей Internet Explorer прежнего образца, в которой нет правил по умолчанию и в которой вам придется использовать старое пространство имен XSL, как в этом примере (листинг 10 5).

Листинг 10.5. Таблица стилей Internet Explorer старого образца

<?xml version="1.0"?>

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/TR/WD-xsl">

 <xsl:template match="/">

<HTML>

<HEAD>

<TITLE>

The Planets Table

</TITLE>

</HEAD>

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

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Безымянный раб

Зыков Виталий Валерьевич
1. Дорога домой
Фантастика:
фэнтези
9.31
рейтинг книги
Безымянный раб

Волк 4: Лихие 90-е

Киров Никита
4. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 4: Лихие 90-е

Кремлевские звезды

Ромов Дмитрий
6. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кремлевские звезды

Газлайтер. Том 4

Володин Григорий
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 4

Восход. Солнцев. Книга VIII

Скабер Артемий
8. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга VIII

Кровь и Пламя

Михайлов Дем Алексеевич
7. Изгой
Фантастика:
фэнтези
8.95
рейтинг книги
Кровь и Пламя

Объединитель

Астахов Евгений Евгеньевич
8. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Объединитель

Комбинация

Ланцов Михаил Алексеевич
2. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Комбинация

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Дайте поспать!

Матисов Павел
1. Вечный Сон
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Дайте поспать!

Бальмануг. Студентка

Лашина Полина
2. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. Студентка

Довлатов. Сонный лекарь

Голд Джон
1. Не вывожу
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII