Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №2.
Создание XML и XSL документов.
Цель работы изучить метод создания XML-документа; язык XSL, который позволяет преобразовать документы XML, используя язык преобразований XSLT.
На смену HTML был предложен новый язык гипертекстовой разметки, мощный, гибкий, и, одновременно с этим, удобный язык XML.
XML (Extensible Markup Language) - это язык разметки, описывающий целый класс объектов данных, называемых XML- документами. Этот язык используется в качестве средства для описания грамматики других языков и контроля за правильностью составления документов. Т.е. сам по себе XML не содержит никаких тэгов, предназначенных для разметки, он просто определяет порядок их создания.
Кроме того, XML-документы могут выступать в качестве уникального способа хранения данных, который включает в себя одновременно средства для разбора информации и представления ее на стороне клиента. XML позволяет также осуществлять контроль за корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые различные данные. Это означает, что его можно использовать при построении сложных информационных систем, в которых очень важным является вопрос обмена информацией между различными приложениями, работающими в одной системе. Создавая структуру механизма обмена информации в самом начале работы над проектом, менеджер может избавить себя в будущем от многих проблем, связанных с несовместимостью используемых различными компонентами системы форматов данных.
В общем случае XML- документы должны удовлетворять следующим требованиям:
1) В заголовке документа помещается объявление XML, в котором указывается язык разметки документа, номер его версии и дополнительная информация.
2) Каждый открывающий тэг, определяющий некоторую область данных в документе обязательно должен иметь своего закрывающего "напарника".
3) В XML учитывается регистр символов.
4) Все значения атрибутов, используемых в определении тэгов, должны быть заключены в кавычки.
5) Вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов.
6) Вся информация, располагающаяся между начальным и конечными тэгами, рассматривается в XML как данные и поэтому учитываются все символы форматирования (т.е. пробелы, переводы строк, табуляции).
Пример: создать XML-документ, в котором содержится информация о книгах: автор, название и цена книги.
<?xml version="1.0" encoding="windows-1251"?> // декларация XML
<?xml-stylesheet type="text/xsl" href="example"?> // связывает наш
документ с таблицей стилей XSL
<library>
<book>
<author>ЛЕВ ТОЛСТОЙ</author>
<name>"АННА КАРЕНИНА"</name>
<price currency="р.">6000</price>
</book>
<book>
<author>МИХАИЛ ШОЛОХОВ</author>
<name>"ТИХИЙ ДОН"</name>
<price currency="р.">10000</price>
</book>
</library>
Любой XML- документ должен всегда начинаться с инструкции <?xml?>, внутри которой также можно задавать номер версии языка, номер кодовой страницы и другие параметры, необходимые программе-анализатору в процессе разбора документа.
Обратите внимание на вторую строку документа, где инструкция xml-stylesheet связывает наш документ с таблицей стилей XSL. Синтаксис этой инструкции одинаков как для привычных таблиц CSS, так и для XSL, отличаясь только атрибутом type, который приобретает соответственно значения text/css и text/xsl. Атрибут href знаком нам по языку HTML и содержит ссылку на файл с таблицей стилей.
Набором всех элементов, содержащихся в документе, задается его структура и определяются все иерархические соотношения. Для корневого элемента нашего документа используется library. Тэги book, author, name, price являются вложенными тегами. Тэг book означает то, что речь пойдёт о книгах; тэг author об авторе книги, тэг name о названии книги, тэг price о цене книги.
Документы XML используют для разделения содержания сайта и его дизайна, так как они хорошо подходят для хранения информации. Ведь главная задача XML - это структурирование информации, а не ее отображение.
Язык XSL включает в себя несколько компонентов, но в первую очередь, интересует такая его составная часть, как язык преобразований XSLT (XSL Transformation Language), который позволяет преобразовать документы с одного диалекта XML на другой.
Для того чтобы ознакомиться, как работает эта технология, нам понадобится XML-файл (который описан выше) и файл с набором инструкций для преобразований XSLT, который часто называют таблицей стилей XSL.
Рассмотрим простую таблицу стилей XSL example.xsl, которая, однако, содержит достаточно элементов, чтобы понять, как работает эта технология и использовать их для создания вполне работоспособных шаблонов.
Пример XSL-документа:
<?xml version="1.0" encoding="windows-1251"?> // декларация XML
<xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/
Transform">
<xsl:template match="library"> // создание шаблона для
корневого элемента документа
<html>
<head> <title> Книги </title> </head>
<body>
<table border="1" cellspacing="0" cellpadding="3"> <xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="book"> // создающий для каждого
элемента строку таблицы
<tr> <xsl:apply-templates /> </tr>
</xsl:template>
<xsl:template match="author | name | price"> // для указанных элементов
применяется один и тот же шаблон
<td> <xsl:apply-templates />
<xsl:value-of select="@currency" /> // извлечение значения
атрибута currency и помещение его в итоговый документ
</td>
</xsl:template>
<xsl:template match="text()"> <xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
Язык XSLT сам является подмножеством XML, и поэтому правила оформления таблицы стилей должны подчиняться всем правилам оформления XML-документов. Первой строкой нашего файла как раз и будет декларация XML, но в данном случае нам необходимо указать схему с описанием диалекта языка XSLT, по правилам которого мы составили наш документ. Это указание необходимо для программ, которые будут обрабатывать XML-документ с таблицей стилей, будь то браузеры или XSLT-процессоры, для подтверждения, что мы используем общепринятую схему для данного диалекта.
Строка <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/ 1999/ XSL/Transform"> указывает, что мы будем использовать схему для создания таблиц стилей xsl:stylesheet, которую можно обнаружить по адресу, указанному в атрибуте xmlns:xsl. Здесь также появляется префикс xsl, который задает название пространства имен, используемых в этой схеме. Он встретится во всех тегах нашей таблицы стилей XSL, указывая на их принадлежность к языку XSLT.
Первым делом, надо создать шаблон для корневого элемента нашего документа library, с помощью тега xsl:template с атрибутом match, задающим элемент, для которого шаблон будет применён. В нашем случае задаем в соответствие корневому элементу стандартные блоки HTML-документа: html, head, title, body, а также создаем таблицу для более удобного представления информации, хранящейся в XML-документе. В блоке body мы применили инструкцию, задача которой - передать содержание элемента library на обработку остальных шаблонов в нашей таблице стилей. Так как это корневой элемент, содержащий все элементы, то и для них будут применены прописанные далее в таблице шаблоны. По такому же принципу построен шаблон для тега book, создающий для каждого элемента строку таблицы.
В следующем шаблоне используем конструкции языка XPath. Его задача - обнаруживать определенные узлы XML по описанию заданному пользователем и передавать их другим инструментам, обрабатывающим документ XML. Благодаря ему мы можем воспользоваться оператором "|" в качестве логического "ИЛИ" для указания элементов, к которым мы хотим применить один и тот же шаблон. Таким образом, мы создаем один шаблон для элементов author, name и price.
Команда xsl:value-of извлекает значение узла XML и помещает его в итоговый документ. Последний шаблон нашего документа обрабатывает текстовое содержание тегов XML, что также указывается с помощью команды XPath text(). Этот шаблон прописывать было не обязательно, так как предыдущий шаблон неявно передает на обработку содержание узлов author, name и price, даже без наших указаний. Тем не менее явная обработка текстовых элементов документа делает наш шаблон более понятным. В команде xsl:value-of в атрибуте select тоже используется команда XPath ".", которая ссылается на текущий элемент. Таким образом, последний шаблон выполняется при нахождении текстовой строки, извлечет ее значение и поместит в результирующий документ. Команда xsl:value-of используется также в шаблоне для элементов author, name, price - для извлечения значения атрибута currency тега price. В языке XPath символ "@" используется для обозначения атрибутов элементов, а выражение <xsl:value-of select= "@currency"/> дает указание извлечь значение атрибута currency и поместить его в итоговый документ. Так как атрибут currency есть только в теге price, то во время обработки тегов author и name не будет возвращено никаких значений, что позволяет использовать эту инструкцию в одном шаблоне для нескольких тегов.
Результат обработки XML-документа с помощью нашей таблицы стилей XSL можно посмотреть браузерах последнего поколения: браузер показывает источник нашего документа как xml-документ, а в окне браузера он отображается как web-страница - со всей информацией, которую хотели вывести:
Варианты заданий.
Составить 2 XML-документа. В одном описать, магазин одежды с её составляющими: а) название фирмы, чья одежда продаётся в магазине, б) вид одежды, в) модель; во втором каталог цен. Данные свести в таблицы. Документы соединяются при помощи ссылки.
Контрольные вопросы.
1. Охарактеризуйте элементы XML- документа, секции CDATA, инструкции по обработке, комментарии, атрибуты, директивы анализатора?
2. Какие главные отличия XML от HTML?
3. Как создать шаблон для корневого элемента документа?
4. Что нужно сделать, чтобы преобразовать XML документ по XSL-таблице?
5. Как происходит процесс преобразования на стороне клиента?
6. Как происходит процесс преобразования на стороне сервера?
7. Способ использования SAX (Simple API for XML)?
8. Возможности XSLT?