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

на главную - закладки

Жанры

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

Шрифт:

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>

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

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

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

Зодчий. Книга II

Погуляй Юрий Александрович
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга II

Анти-Ксенонская Инициатива

Вайс Александр
7. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Анти-Ксенонская Инициатива

Император Пограничья 1

Астахов Евгений Евгеньевич
1. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 1

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

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

Черный Маг Императора 14

Герда Александр
14. Черный маг императора
Фантастика:
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 14

Зодчий. Книга III

Погуляй Юрий Александрович
3. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга III

Трапеция

Брэдли Мэрион Зиммер
Проза:
современная проза
5.00
рейтинг книги
Трапеция

Юнлинг

Метельский Николай Александрович
Фантастика:
героическая фантастика
космическая фантастика
попаданцы
8.35
рейтинг книги
Юнлинг

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар

Геном хищника. Книга пятая

Гарцевич Евгений Александрович
5. Я - Легенда!
Фантастика:
рпг
фэнтези
попаданцы
6.00
рейтинг книги
Геном хищника. Книга пятая

Наемный корпус

Вайс Александр
5. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Наемный корпус

Азеф

Гуль Роман Борисович
Проза:
историческая проза
6.00
рейтинг книги
Азеф

Я уже барон

Дрейк Сириус
2. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже барон