</xsl:apply-templates>

  </xsl:if>

 </xsl:template>

</xsl:stylesheet>

Теперь осталось лишь только создать страницу, которая при помощи JavaScript и MSXML будет выполнять преобразования и выводить результат.

Для того чтобы воспользоваться возможностями MSXML, мы включим в нашу страницу два объекта:

<!-- Объект, представляющий входящий документ -->

<object

 id='source'

 width='0'

 height='0'

 classid='clsid:f5078f32-c551-11d3-89b9-0000f81fe221'>

 <param name='async' value='false'>

 <param name='validateOnParse' value='false'>

</object>

<!-- Объект, представляющий документ преобразования -->

<object

 id='stylesheet'

 width='0'

 height='0'

 classid='clsid:f5078f32-c551-11d3-89b9-0000f81fe221'>

 <param name='async' value='false'>

 <param name='validateOnParse' value='false'>

</object>

'Магический' код clsid:f5078f32-c551-11d3-89b9-0000f81fe221, который присутствует в тегах обоих объектов, на самом деле не что иное, как уникальный идентификатор библиотеки MSXML 3.0, которую мы и будем использовать для выполнения преобразования. Итак, код нашей HTML- страницы будет выглядеть следующим образом.

Листинг 9.8. Код HTML-страницы

<html>

 <head>

  <meta

   http-equiv='Content-Type'

   content='text/html; charset=windows-1251' />

  <style type='text/css'>

   body {font-family:Tahoma,Verdana,Arial,sans-serif; font-size:14px}

   a:link {COLOR:#990000; BACKGROUND: #ffffff; TEXT-DECORATION: none}

   a:hover {BACKGROUND: #dddddd; TEXT-DECORATION: none}

   a:visited {COLOR: #990000; TEXT-DECORATION: none}

  </style>

  <script language='JavaScript'>

   <!--

   // Объявляем глобальные переменные

   // Входящий документ

   var source;

   // Преобразование

   var stylesheet;

   // Результат

   var result;

   // Функция, выполняющая действия по инициализации

   function init() {

    // Инициализируем ссылку на объект входящего документа

    source = document.all['source'];

    // Загружаем входящий документ

    source.load('source.xml');

    // Инициализируем ссылку на объект преобразования

    stylesheet = document.all['stylesheet'];

    // Загружаем документ преобразования

    stylesheet.load('stylesheet.xsl');

    // Находим элемент, в который мы будем выводить

    // результат обработки

    result = document.all['result'];

   }

   // Функция, выполняющая 'раскрытие'

   //определенной ветки дерева категорий.

   function expand(id) {

    // Получаем ссылку на атрибут select

    // объявления параметра current

    var attSelect = stylesheet.selectSingleNode(

     '/xsl:stylesheet/xsl:param[@name='current']/@select');

    // Изменяем значение этого атрибута. Одинарные кавычки необходимы

    // для того, чтобы новое значение воспринималось как литерал.

    attSelect.nodeValue = ''' + id + ''';

    // Выполняем преобразование

    strResult = source.transformNode(stylesheet);

    // Обновляем страницу

    result.innerHTML = strResult;

   }

   //-->

  </script>

 </head>

 <body onload='init()'>

  <!-- Объект, представляющий входящий документ -->

  <object

   id='source'

   width='0'

   height='0'

   classid='clsid:f5078f32-c551-11d3-89b9-0000f81fe221'>

   <param name='async' value='false'>

   <param name='validateOnParse' value='false'>

  </object>

  <!-- Объект, представляющий документ преобразования -->

  <object

   id='stylesheet'

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату