русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Преобразование XML_документа с помощью XSLT


Дата добавления: 2015-07-09; просмотров: 1636; Нарушение авторских прав


 

После того как вы загрузили, выполнили синтаксический разбор или каким_то другим способом получили объект Document, представляющий XML_документ, одно из самых интереснейших действий, которые можно с ним выполнить, – это преобразовать документ с помощью таблицы XSLT_стилей. Аббревиатура XSLT происходит от XSL Transformations (XSL_преобразования), а XSL – от Extensible Stylesheet Language (расширяемый язык таблиц стилей). Таблицы XSL_стилей – это XML_документы, которые могут быть загружены и разобраны, как и любые другие XML_документы. Изучение XSL далеко выходит за рамки темы этой кни_ ги, тем не менее в примере 21.8 демонстрируется таблица стилей, которая может использоваться для преобразования в HTML_таблицу XML_документа, подобно_ го представленному в примере 21.6.

 

Пример 21.8. Простейшая таблица XSL'стилей

<?xml version="1.0"?><!__ это XML_документ __>

 

<!__ объявить пространство имен xsl, чтобы отличать xsl_теги от html_тегов __> <xsl:stylesheet version="1.0"


 

21.3. Преобразование XML*документа с помощью XSLT
   

 

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/>

 

<!__ Когда будет найден корневой элемент, вывести каркас HTML_таблицы __> <xsl:template match="/">

<table>

 

<tr><th>Имя</th><th>Электронная почта</th></tr> <xsl:apply_templates/> <!__ и рекурсия по другим шаблонам __>

 

</table>

</xsl:template>

 

<!__ Когда встретится элемент <contact>... __> <xsl:template match="contact">

<tr> <!__ Начать новую строку таблицы __>



 

<!__ Использовать атрибут name тега contact как первый столбец __> <td><xsl:value_of select="@name"/></td>

 

<xsl:apply_templates/> <!__ и рекурсия по другим шаблонам __> </tr>

</xsl:template>

 

<!__

 

Когда встретится элемент <email>, вывести его содержимое в другую ячейку __>

 

<xsl:template match="email"> <td><xsl:value_of select="."/></td>

</xsl:template>

</xsl:stylesheet>

 

Правила в таблицах XSL_стилей используются для XSLT_преобразований XML_ документов. В контексте клиентского JavaScript_кода это обычно означает пре_ образование XML_документов в HTML_документы. Многие архитектуры разра_ ботки веб_приложений используют XSLT на стороне сервера, но броузеры на ба_ зе Mozilla и броузеры линейки IE поддерживают XSLT_преобразования на сторо_ не клиента, что может помочь снизить нагрузку на сервер и объем трафика, пе_ редаваемого по сети (потому что формат XML, как правило, более компактный, чем HTML).

 

Многие современные броузеры позволяют определять XML_стили с помощью таблиц CSS_ или XSL_стилей. Если определить таблицу стилей в исполняемой инструкции xml_stylesheet, тогда можно загрузить XML_документ непосредст_ венно в броузер, а броузер преобразует и отобразит его. Например, исполняемая инструкция могла бы выглядеть примерно так:

 

<?xml_stylesheet href="dataToTable.xml" type="text/xsl"?>

 

Обратите внимание: броузеры выполняют такого рода XSLT_преобразования ав_ томатически, когда XML_документ, содержащий соответствующую исполняе_ мую инструкцию, загружается в окно броузера. Это очень важно и очень удобно, но не это является темой данного раздела. Дальше я расскажу о том, как с помо_ щью JavaScript выполнить динамическое XSLT_преобразование.

 

Консорциум W3C не определяет стандартного прикладного интерфейса для XSLT_ преобразований DOM_объектов Document и Element. В броузерах на базе Mozilla прикладной интерфейс для XSLT_преобразований в JavaScript представляет объект XSLTProcessor. В IE XML_объекты Document и Element имеют метод transform_


 

530 Глава 21. JavaScript и XML

Node(), выполняющий преобразования. В примере 21.9 демонстрируется исполь_ зование обоих прикладных интерфейсов. В нем определяется класс XML.Trans_ former, который инкапсулирует таблицу XSL_стилей и позволяет использовать ее для преобразования более одного XML_документа. Метод transform() объекта XML.Transformer с помощью инкапсулированной таблицы стилей выполняет пре_ образование указанного XML_документа, а затем замещает содержимое заданно_ го DOM_элемента результатом преобразования.

 

Пример 21.9. XSLT в Mozilla и Internet Explorer

/**

* Этот класс XML.Transformer инкапсулирует таблицу XSL_стилей.

* Если параметр stylesheet представляет собой URL_адрес, выполняется

* загрузка таблицы. Иначе предполагается, что это ссылка

* на соответствующий DOM_объект Document.

*/

XML.Transformer = function(stylesheet) {

// Загрузить таблицу стилей, если это необходимо.

 

if (typeof stylesheet == "string") stylesheet = XML.load(stylesheet); this.stylesheet = stylesheet;

 

// В броузерах на базе Mozilla создать объект XSLTProcessor

// и передать ему таблицу стилей.

 

if (typeof XSLTProcessor != "undefined") { this.processor = new XSLTProcessor(); this.processor.importStylesheet(this.stylesheet);

}

};

 

/**

* Это метод transform() класса XML.Transformer.

* Выполняет преобразование указанного xml_узла с использованием

* инкапсулированной таблицы стилей.

* Предполагается, что в результате преобразования получается HTML_код,

* которым следует заменить содержимое указанного элемента.

*/

 

XML.Transformer.prototype.transform = function(node, element) { // Если элемент указан по id, отыскать его.

if (typeof element == "string") element = document.getElementById(element);

 

if (this.processor) {

// Если был создан объект XSLTProcessor (в броузерах на базе Mozilla),

// использовать его.

// Преобразовать узел в DOM_объект DocumentFragment.

var fragment = this.processor.transformToFragment(node, document);

 

// Стереть существующее содержимое элемента. element.innerHTML = "";

 

// И вставить преобразованные узлы. element.appendChild(fragment);

}

else if ("transformNode" in node) {

// Если узел имеет метод transformNode() (в IE), использовать его.

 

// Обратите внимание: transformNode() возвращает строку. element.innerHTML = node.transformNode(this.stylesheet);

}


 

21.4. Выполнение запросов к XML*документу с помощью XPath*выражений
   

 

else {

// В противном случае удача отвернулась от нас.

throw "XSLT не поддерживается в этом броузере";

}

};

 

/**

* Эта вспомогательная функция, выполняющая XSLT_преобразование,

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

 

*/

XML.transform = function(xmldoc, stylesheet, element) {

var transformer = new XML.Transformer(stylesheet);

transformer.transform(xmldoc, element);

}

 

К моменту написания этих строк IE и броузеры на базе Mozilla были единствен_ ными из основных броузеров, предоставляющих API для XSLT_преобразований. Если для вас важно иметь поддержку и в других броузерах, вас наверняка заин_ тересует проект AJAXSLT – свободно распространяемая JavaScript_реализация XSLT_преобразований. Разработка проекта AJAXSLT была начата компанией Google, ознакомиться с ним можно на сайте проекта по адресу http://goog' ajaxslt.sourceforge.net.

 



<== предыдущая лекция | следующая лекция ==>
Модели XML DOM и HTML DOM | Выполнение запросов к XML_документу с помощью XPath_выражений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.157 сек.