Простые примеры
Рассмотрим простой пример XML-документа: Пример 15. <?xml version="1.0" encoding="windows-1251"?> <Book> <Title>Война и мир</Title> <Author>Толстой Л.Н</Author> <Pages>600</Pages> <Type>роман</Type> <Text Type=’text’>http://www.text.com/book1</Text> </Book> Если открыть этот файл в браузере, то появиться тот же самый текст, который приведен выше, вместе со всеми тегами и служебной информацией.
Новый вид XML-документа, с добавлением ссылки на XSL- документ во второй строке: <?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet type='text/xsl' href='ex01.xsl'?> <Book> <Title>Война и мир</Title> <Author>Толстой Л.Н</Author> <Pages>600</Pages> <Type>роман</Type> <Text Type=’text’>http://www.text.com/book1</Text> </Book> Текст XSL-документа из файла ex01.xsl: <?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <p><b><xsl:value-of select="Book/Title"/></b></p> <p><i><xsl:value-of select="Book/Creator"/></i></p> <p><xsl:value-of select="Book/Pages"/></p> <p><xsl:value-of select="Book/Type"/></p> <p><xsl:value-of select="Book/Identifier/@Type"/></p> <p><xsl:value-of select="Book/Identifier"/></p> </xsl:template> </xsl:stylesheet> Если открыть новый вариант XML-документа в браузере, то на экране осталась только необходимая информация, все теги XML-документа отображаться не будут. Результат, который получился на экране браузера, приведен ниже:
Другой вариант XSL-документа из файла ex01-2.xsl: <?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <table border="1"> <tr><td><b><xsl:value-of select="Book/Title"/></b></td></tr> <tr><td><i><xsl:value-of select="Book/Creator"/></i></td></tr> <tr><td><xsl:value-of select="Book/Pages"/></td></tr> <tr><td><xsl:value-of select="Book/Type"/></td></tr> <tr><td><xsl:value-of select="Book/Identifier/@Type"/></td> </tr> <tr><td><xsl:value-of select="Book/Identifier"/></td></tr> </table> </xsl:template> </xsl:stylesheet> Если заменить в XML-документе во второй строке имя XSL-файла на ex01‑2.xsl, то в браузере Internet Explorer результат будет другим:
Существуют два основных шага для отображения XML-документа при использовании XSL-таблицы стилей: 1. создание XSL-таблицы стилей. 2. связывание XSL-таблицы стилей с XML-документом, включив в документ инструкцию по обработке xml-stylesheet, которая имеет следующую обобщенную форму записи: <?xml-stytesheet type="text/xls" href=”XSLFilePath”?> Здесь XSLFilePath представляет собой заключенный в кавычки URL, указывающий местонахождение файла таблицы стилей. Можно использовать полный URL, например href="http:/www.my_domain.com/ex01-2.xsl" или указать только имя файла, если XSL-таблица находится в той же папке что и XML-документ – href="ex01-2.xsl". Рассмотрим теперь более подробно XSL-документ из файла ex01.xsl Пример 15. Его текст:
Первая строка информирует о том, что файл имеет формат XML. XSL это корректный XML-документ и на него распространяются все правила написания XML-документов. Подобно любому XML-документу, XSL-таблица стилей содержит простой текст, и ее можно создать с помощью любого текстового редактора. Как и всякий XML-документ он должен содержать единственный корневой элемент и в случае XSL-документа это может быть только (строки 2 и 12): <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> … </xsl:stylesheet> Корневой элемент XSL-документа должен содержать обязательный атрибут version и описание пространства имен XSL. Для XSL-файлов ссылка на пространство имен является стандартной. Если необходимо могут быть и другие пространства имен, обязательно должные быть указаны те же пространства имен, которые присутствовали в XML-документе для организации правильных ссылок на его элементы. Корневой элемент xsl:stylesheet должен содержать один или несколько шаблонов template. В рассматриваемом примере шаблон только один, который имеет следующую форму (строки 4 и 11): <xsl:template match="/"> <!-- дочерние элементы... --> </xsl:template> Браузер использует шаблон для отображения определенной ветви элементов XML-документа, с которым связана таблица стилей. Атрибут match шаблона указывает на определенную ветвь. Значение атрибута match носит название образца (pattern). Образец в данном примере ("/") представляет корневой элемент XML-документа, то есть этот шаблон содержит инструкции для отображения всего XML-документа. Каждая XSL-таблица стилей должна содержать один и только один шаблон с атрибутом match, который имеет значение "/". Можно включить один или несколько дополнительных шаблонов с инструкциями для отображения определенных подчиненных ветвей в структуре XML-документа; каждая из них должна иметь образец, отвечающий определенной ветви. Шаблон содержит два вида XML-элементов. · XML-элементы, представляющие HTML-разметку. Примерами подобного вида XML-элемента из рассматриваемой таблицы стилей являются теги в строке 5: <p><b> … </b></p> которые указывают, как отображать содержимое XML-элементов. В этом случае указывается, что XML-элемент будет в отдельном абзаце и отображаться жирным шрифтом. Все включенные HTML-элементы должны быть корректно сформированы в соответствии с правилами XML. XSLT в браузере просто копирует каждый HTML-элемент непосредственно на выход браузера, который воспринимает и обрабатывает их. · XSL-элементы. Примеры XSL-элементов из рассматриваемой таблицы стилей являются элементами xsl:value-of, например: <xsl:value-of select="Book/Title"/> Браузер отличает XSL-элемент от элемента HTML по префиксу описания пространства имен xsl. XSL-элементы в шаблоне содержат инструкции по выбору и модификации данных XML, либо используются для выполнения других задач. XSL-элемент value-of добавляет содержимое указанного XML-элемента и, также, любых его дочерних элементов, в выходной поток HTML, который и отображается браузером. XML-элемент указывается в атрибуте select XSL-элемента value-of, например, Book/Title, что приводит к выводу текстового содержимого элемента Title. XML-элемент в атрибуте select задается с помощью оператора пути – Book/Title, который определяет местонахождение элемента в дереве XML-документа. Если опустить атрибут select для XSL-элемента value-of, элемент будет осуществлять вывод текстового содержимого плюс текстовое содержимое всех дочерних элементов в текущий элемент. В приведенном примере, поскольку текущим является корневой элемент, пропуск атрибута select приведет к выводу всех символьных данных в XML-документ. В строке 9 примера происходит обращение к атрибутам XML-элемента. От работы с XML-элементами обращение к атрибуту отличается указанием символа "@" перед именем атрибута – Book/Identifier/@Type.
|