Часть 1 (Э.Н. Самохвалов, Г.И. Ревунков, Ю.Е. Гапанюк - Методические указания по выполнению лабораторных работ по курсу XML-технологии), страница 2
Описание файла
Файл "Часть 1" внутри архива находится в папке "Самохвалов Э.Н., Ревунков Г.И., Гапанюк Ю.Е. - Методические указания по выполнению лабораторных работ по курсу XML-технологии". PDF-файл из архива "Э.Н. Самохвалов, Г.И. Ревунков, Ю.Е. Гапанюк - Методические указания по выполнению лабораторных работ по курсу XML-технологии", который расположен в категории "". Всё это находится в предмете "xml технологии" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "xml технологии" в общих файлах.
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Результатвыполнения такой же, как в предыдущем запросе.10A/BЭлемент B, вложенный в элемент A.A//BЭлемент B, вложенный на любой глубине в элемент A.Обратите внимание, что элемент B со значением B2 невложен непосредственно в элемент А./A/*Любой элемент, вложенный в A, вложенный вкорневой элемент.11/A/E/BЭлемент B, вложенный в E, вложенный в A,вложенный в корневой элемент.A/B | A/CВсе элементы B или C, вложенные в A, символ « | » –оператор объединения множеств.A//*Все элементы, вложенные в А на любой глубине.12//B/@bАтрибуты b, вложенные в элементы B. Символ @означает, что за ним следует название атрибута, а неэлемента.//*/@*Все атрибуты всех элементов документа.Обратите внимание, что если в запросе используется //, то такой запросможет «подтягивать» элементы на более высокий уровень иерархии.
Например, взапросе A//*, элементы E и G возвращаются на одном уровне иерархии, хотя всоответствии с примером элемент G вложен в E.Если после названия элемента стоит выражение в квадратных скобках, то этоозначает, что к элементу применяется фильтр. Выбираются не все элементы, атолько те, которые удовлетворяют фильтру.13В качестве фильтра может быть задано число, которое определяет номерэлемента.
Это похоже на использование индексов в массиве. Или в качествефильтра может быть задано условие поиска.A/B[1]Первый элемент B, вложенный в A.(ВнекоторыхреализацияхXPathнумерацияначинается с 0, в некоторых с 1).A/B[last()]Последний элемент B, вложенный в A.Функция last() возвращает индекс последнего элементав последовательности.14//A[(B or C) and E]Поиск такого элемента A, в который вложеныэлементы B или C и вложен элемент E. Значенияэлементов B, C, E в данном запросе не важны.
Здесьпроверяется только наличие вложенных элементов.//A[B and not(Z)]Поиск такого элемента A, в который вложен B и невложен Z.//A[B!="str1"]Поиск такого элемента A, у которого есть вложенныйэлемент B не равный «str1».15//B[@b="b1"]Поиск элемента B, у которого есть атрибут b=b1.Символ @ означает, что за ним следует названиеатрибута, а не элемента.//C[. = "C1"]Поиск элемента C = C1.
Точка означает, чтопроверяется значение текущего элемента./A//E[@e="e1" and Все элементы G, непосредственно вложенные в E.B="B2"]/GЭлемент Е вложен в A на любой глубине. Элемент Анепосредственно вложен в корневой элемент. ЭлементE должен содержать атрибут e=e1 и вложенныйэлемент B=B2.16//A[B="B1"]/Элемент B=B2 должен быть вложен в Е. Элемент ЕE[@e="e1"]/B[.="B2"] должен содержать атрибут e=e1. Элемент Е долженбыть вложен в элемент А. Элемент А долженсодержать вложенный элемент B=B1.Этотпримерприменятьсякпоказывает,чтоэлементамнафильтрылюбоймогутглубиневложенности и фильтрами могут быть снабженынесколько элементов в запросе.//number[@id<2 or@id>2]Поиск элементов number, у которых атрибут id<2 илиатрибут id>2.17//text()Все текстовые узлы документаДля сравнения могут быть использованы следующие операторы: =(равенство), != (неравенство), <, <=, >, >=.В некоторых реализациях XPath знаки <, >, заменяются на соответствующиессылки на символы < и >.
Тогда операторы сравнения <=, >= будут записаныкак <=, >=.Для выборки конструкций определенного типа (иногда их называют узламидокумента) можно использовать следующие функции: text() – любой текстовый узел. node() – любой узел, который не является атрибутом и корневымэлементом. comment() – комментарий. processing-instruction() – инструкция обработки.3.4 Введение в XSLTДля преобразования XML–документов в другие форматы была разработанатехнология XSLT.XSLT расшифровывается как Extensible Stylesheet Language Transformations,расширяемый язык стилевых преобразований.Как правило, с помощью XSLT выполняют три варианта преобразований:1.
Из XML в HTML. Этот вариант часто применяется в Web-приложениях.182. Из XML в другой словарь XML (в другой набор тэгов). Этот вариантназывают преобразованием словарей XML.3. Из XML в текстовый формат, например в CSV (comma separated values –формат, в котором разделителями являются запятые).Единственная задача, которую нельзя решить напрямую с помощьютехнологии XSLT – это преобразование из XML в двоичный формат. Для решенияэтой задачи можно использовать технологию расширений XSLT, когда из XSLTпреобразования вызывается исполняемый код.XSLT-преобразование осуществляется специализированной программой илибиблиотекой, которая называется XSLT-процессор.Принцип обработки XML-документов заключается в следующем: приразборе XSLT-документа XSLT-процессор обрабатывает инструкции этого языкаи каждому элементу, найденному в XML- дереве, ставит в соответствие набортэгов HTML, XML или текст, которые определяют форматирование этогоэлемента.Инструкции XSLT определяют точное положение элемента XML вдокументе с помощью XPath-выражений, поэтому существует возможностьприменять различные стили оформления к элементам с одинаковыми названиями,в зависимости от их положения в документе.3.4.1 XSLT-преобразования с фиксированной структуройРассмотрим простой пример преобразования XSLT, который преобразуетXML-документ, посвященный языкам разметки, в HTML-документ.Файл 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>19<howold>19</howold></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">20<!-- Перебор в цикле всех элементов language, вложенных в элементlanguages. --><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>Просмотр результата в браузере:21В файле XML наиболее интересна вторая строка (инструкция обработки xmlstylesheet):<?xml-stylesheet type="text/xsl" href="Example_1.xsl"?>Значение атрибута type="text/xsl" указывает на то, что для отображениядокумента должно быть использовано XSLT-преобразование.
В атрибуте hrefзадается URI для доступа к файлу XSLT. Расширение файла XSLT обычно « xsl ».ЕслиоткрытьдокументспомощьюанализатораXML,которыйподдерживает инструкцию xml-stylesheet и может вызывать XSLT-процессор, тоXSLT-преобразование будет применено к документу. Такие анализаторы,например, встроены в браузеры Mozilla и Internet Explorer.22Обратим внимание, что преобразование XSLT является документом XML.Этот документ содержит программу на языке XSLT. Команды XSLT задаются ввиде XML-элементов. Выделить эти команды просто, так как перед ними стоитпрефикс « xsl: » (как выяснится позже, замечание по поводу префикса потребуетуточнения).Рассмотрим более подробно текст преобразования XSLT.<?xml version="1.0" encoding="Windows-1251"?>Преобразование 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>23<TH>Язык разметки</TH><TH>Год создания</TH><TH>Возраст технологии (лет)</TH><TH>Название текущего элемента</TH><TH>Содержимое текущего элемента (контекст)</TH><TH>Название элемента верхнего уровня</TH></TR>Тэги языка HTML (без префикса «xsl:») просто выводятся в результирующийдокумент.