Учебное пособие (1075724), страница 7
Текст из файла (страница 7)
2.2. Результат выполнения примера 2.2.В файле XML наиболее интересна вторая строка:<?xml-stylesheet type="text/css" href="style.css"?>Это инструкция обработки xml-stylesheet, в которой задаются параметрыотображения документа. Для отображения используется таблица стилей CSS(type="text/css") из файла "style.css". В общем случае в атрибуте href задаетсяполный URI (URL) для доступа к таблице стилей.В файле CSS заданы параметры отображения для элемента language(фоновый цвет и отображение с новой строки) и для элемента name (цвет текста ипараметры шрифта).ЕслиоткрытьдокументспомощьюанализатораXML,которыйподдерживает инструкцию xml-stylesheet, то таблица стилей CSS будет примененак документу. Такие анализаторы, например, встроены в браузеры Mozilla иInternet Explorer.К сожалению, CSS не позволяет задавать более сложные возможностиформатирования.
Например, с его помощью нельзя изменить порядок выводаэлементов или изменить данные при выводе.2.2.2 Введение в XSLTДля преобразования XML–документов в другие форматы была разработанатехнология XSLT.XSLT расшифровывается как Extensible Stylesheet Language Transformations,расширяемый язык стилевых преобразований.С помощью этой технологии можно выполнять преобразования намногоболее сложные, чем с помощью CSS.Как правило, с помощью XSLT выполняют три варианта преобразований:1. Из XML в HTML.
Этот вариант часто применяется в Web-приложениях.2. Из XML в другой словарь XML (в другой набор тэгов). Этот вариантназывают преобразованием словарей XML.503. Из XML в текстовый формат, например в CSV (comma separated values –формат, в котором разделителями являются запятые).Единственная задача, которую нельзя решить напрямую с помощьютехнологии XSLT – это преобразование из XML в двоичный формат. Для решенияэтой задачи можно использовать технологию расширений XSLT, когда из XSLTпреобразования вызывается исполняемый код.XSLT-преобразование осуществляется специализированной программой илибиблиотекой, которая называется XSLT-процессор.Принцип обработки XML-документов заключается в следующем: приразборе XSLT-документа XSLT-процессор обрабатывает инструкции этого языкаи каждому элементу, найденному в XML- дереве, ставит в соответствие набортэгов HTML, XML или текст, которые определяют форматирование этогоэлемента.Инструкции XSLT определяют точное положение элемента XML вдокументе с помощью XPath-выражений, поэтому существует возможностьприменять различные стили оформления к элементам с одинаковыми названиями,в зависимости от их положения в документе.2.2.3 Пример преобразования XSLTРассмотрим простой пример преобразования XSLT, который преобразуетXML-документ, посвященный языкам разметки, в HTML-документ.Пример 2.3.Файл XML:<?xml version="1.0" encoding="Windows-1251"?><?xml-stylesheet type="text/xsl" href="Example_1.xsl"?><!-- Языки разметки --><languages><language id="1"><name>HTML</name><year>01.01.1990</year><howold>19</howold>51</language><language id="2"><name>XML</name><year>01.01.1998</year><howold>11</howold></language><language id="3"><name>SGML</name><year>01.01.1986</year><howold>23</howold></language></languages>Файл XSLT:<?xml version="1.0" encoding="Windows-1251"?><!--XSLT - документ является XML - документом.
--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0"><!-- Описание XSLT - документа --><xsl:template match="/"><!-- Правило обработки корневого элемента XML - документа --><HTML><BODY><TABLE BORDER="2"><TR><TH>№</TH><TH>Язык разметки</TH><TH>Год создания</TH><TH>Возраст технологии (лет)</TH><TH>Название текущего элемента</TH><TH>Содержимое текущего элемента (контекст)</TH><TH>Название элемента верхнего уровня</TH></TR><xsl:for-each select="languages/language"><!-- Перебор в цикле всех элементов language, вложенных в элементlanguages.
-->52<TR><TD><xsl:value-of select="@id"/></TD><!-- Выбор значения атрибута id элемента language --><TD><xsl:value-of select="name"/></TD><!-- Выбор значения элемента name, вложенного в элемент language --><TD><xsl:value-of select="year"/></TD><!-- Выбор значения элемента year, вложенного в элемент language --><TD><xsl:value-of select="howold"/></TD><!-- Выбор значения элемента howold, вложенного в элемент Language--><TD><xsl:value-of select="name(.)"/></TD><!-- Название текущего элемента --><TD><xsl:value-of select="."/></TD><!-- Содержимое текущего элемента (контекст) --><TD><xsl:value-of select="name(parent::*)"/></TD><!-- Название элемента верхнего уровня (также можно использоватьselect="name(..)") --></TR></xsl:for-each></TABLE></BODY></HTML></xsl:template></xsl:stylesheet>Просмотр результата в браузере:53Рис.
2.3. Результат выполнения примера 2.3.В файле XML наиболее интересна вторая строка (инструкция обработки xmlstylesheet):<?xml-stylesheet type="text/xsl" href="Example_1.xsl"?>Сравним ее с той, которая использовалась для CSS:<?xml-stylesheet type="text/css" href="style.css"?>Значение атрибута type="text/xsl" указывает на то, что для отображениядокумента должно быть использовано XSLT-преобразование. В атрибуте hrefзадается URI для доступа к файлу XSLT. Расширение файла XSLT обычно « xsl ».ЕслиоткрытьдокументспомощьюанализатораXML,которыйподдерживает инструкцию xml-stylesheet и может вызывать XSLT-процессор, тоXSLT-преобразование будет применено к документу.
Такие анализаторы,например, встроены в браузеры Mozilla и Internet Explorer.Обратим внимание, что преобразование XSLT является документом XML.Этот документ содержит программу на языке XSLT. Команды XSLT задаются ввиде XML-элементов. Выделить эти команды просто, так как перед ними стоитпрефикс « xsl: » (как выяснится позже, замечание по поводу префикса потребуетуточнения).Рассмотрим более подробно текст преобразования XSLT.<?xml version="1.0" encoding="Windows-1251"?>54Преобразование XSLT является XML-документом, поэтому документначинается с инструкции обработки <?xml . . . ?><!--XSLT - документ является XML - документом.
-->В преобразовании XSLT используются XML-комментарии <!-- . . . --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0">Элемент stylesheet является корневым элементом документа и соответствуетполной «программе» на языке XSLT. Атрибут version с указанием версииобязателен. Атрибут xmlns:xsl задает префикс пространства имен, об этом болееподробно в следующем разделе.Вместо элемента xsl:stylesheet может быть использован элемент xsl:transform.Эти элементы являются синонимами.<!-- Описание XSLT - документа --><xsl:template match="/">Элемент template (шаблон) соответствует «процедуре».
Элементов template впреобразовании может быть несколько, в этом примере он один. Атрибут matchопределяет, какому элементу преобразуемого документа соответствует шаблон.Значение match="/" показывает, что шаблон соответствует корневому элементупреобразуемого документа. Шаблон со значением match="/" вызывается первым.В общем случае значение атрибута match – это XPath-выражение.<!-- Правило обработки корневого элемента XML - документа --><HTML><BODY><TABLE BORDER="2"><TR><TH>№</TH><TH>Язык разметки</TH><TH>Год создания</TH>55<TH>Возраст технологии (лет)</TH><TH>Название текущего элемента</TH><TH>Содержимое текущего элемента (контекст)</TH><TH>Название элемента верхнего уровня</TH></TR>Тэги языка HTML (без префикса « xsl: ») просто выводятся врезультирующий документ. Это можно рассматривать как оператор вывода.














