Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-07.doc
Скачиваний:
8
Добавлен:
12.05.2015
Размер:
332 Кб
Скачать
☆

5.3.2. Язык xsLи его компоненты

Как уже говорилось, язык XMLописывает структуру документа, но не говорит о том, как этот документ должен быть обработан или отображен. Выше рассмотрены два средства для решения этих задач: использование инструкции по обработкеxml-stylesheetдля вывода документа с помощью каскадных таблиц стилейCSSи использование средствDOMXML. Первое средство предоставляет очень ограниченные возможности по стилевому оформлению документа, а второе требует написания программ вывода документаXMLна языкахJavaScriptилиJava.

Аналогичная проблема в языке SGML– родителе языкаXML, была решена с помощью создания языка семантики и описания стиля документаDSSSL(DocumentStyleSemanticsAndSpecificationLanguage). Поскольку XMLявляется подмножествомSGML, языкDSSSLможно использовать и для документовXML, например, для преобразования документаXMLс однимDTDв документXMLс другимDTDили форматированного вывода документаXML. Как и сам язык SGML, языкDSSSLявляется мощным, но в тоже время очень сложным средством. Поэтому консорциумW3 разработал свое средство для форматированного вывода документов XML – расширяемый язык стилейXSL(ExtensibleStylesheetLanguage).

Первоначально предполагалось, что задача форматирования документа XMLбудет решена с использованием только языкаXSL. Однако при разработке спецификации этого языка выяснилось, что процесс форматирования документаXMLразбивается на два этапа.

На первом этапевыполняется преобразование исходного документаXML, точнее его иерархического представления, в другое иерархическое представление с возможным изменением структуры документа для его форматирования. Так, например, в документ XML может быть добавлено оглавление или сделана выборка их документа по какому-либо критерию.

На втором этапек узлам полученной иерархической структуры, которые называются объектами форматирования –FO(FormatObjects), применяются стили форматирования на уровне всего документа, его отдельных страниц и элементов (абзацев, фрагментов абзацев, изображений, таблиц, списков и т.д.).

Поэтому в настоящее время язык XSLописан в двух отдельных спецификациях. Первая спецификация – язык преобразований XSL –XSLT(XSLTransformation) версия 1.0, описывающая средства преобразования вXSL, была принята в ноябре 1999 года. В январе 2007 года принята версия 2.0 этой спецификации, предназначенной для работы совместно с XPath 2.0.

Ниже рассматриваются средства и возможности языка XSLT, определенные в спецификации 2.0 (средства собственно языка XSLбудут рассмотрены отдельно).

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

5.3.3.1. Технология преобразования

В общем случае в преобразовании участвуют три документа:

  • входной документ, над которым выполняется преобразование (документ XML);

  • входной документ, описывающий преобразование (документ XSLT);

  • выходной документ – результат преобразования.

Процесс преобразования входного до­кумента в соответствии с описанными правилами называется применением преобразования к входному документу или просто выполнением преобразования. Это выполнение осуществляют специальные программы, которые называютсяпроцессорами XSLT.

Документ XSLT, содержащий правила преобразования, также является документом XML (обычно с расширением .xsl), формируемым в соответствии с инструкциями и объявлениями языка XSLT, определенными в пространстве имен этого языка. Документ XSLT может также содержать элементы, которые определены в других пространствах имен, например, в пространстве имен функций XPath 2.0.

Процессор XSLTвыполняет операции над исходным документом XML в три этапа:

  • этап анализа;

  • этап преобразования;

  • этап сериализации.

На этапе анализапроцессорXSLTпреобразует входные текстовые документы в их иерархическое представление (рис. 5.3.1). В спецификации определены два типа процессоров XSLT: процессоры без использования схемы и процессоры с использованием схемы. Последний тип проверяет действительность документа, т.е. его соответствие своей схеме. При анализе входных документов обычно используется встроенный или внешнийSAX-анализатор или DOM-анализатор.

Рис. 5.3.1. Анализ и преобразование входных документов

в иерархические структуры

На этапе преобразованияпроцессор XSLT применяет правила преобразования, описанные в документе XSLT, к иерархической структуре входного документа XML. В результате преобразования получается иерархическая структура выходного документа (рис. 5.3.2).

Рис. 5.3.2. Преобразование документа XML процессором XSLT

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

Спецификация XSLT 2.0 определяет четыре обязательных вида сериализации, которые должен поддерживать процессор XSLT: документ XML, документHTML, документXHTMLи чисто текстовый документ, не содержащий элементов разметки.

Конкретная реализация процессора XSLTможет поддерживать и другие виды сериализации, например, форматWordили форматPDF.

Этап сериализации показан на рис. 5.3.3.

Рис. 5.3.3. Сериализация структуры выходного документа процессором XSLT

В отличие от языка схем, спецификация языка XSLTпозволяет вводить собственные функции и элементы и использовать их в преобразованиях. Однако использование расширений может привести к потере переносимости при выполнении преобразований на различных компьютерных платформах.

Расширения можно создавать на различных языках программирования, но наиболее часто используется язык Java, поскольку в нем есть средства, облегчающие разработку новых элементов и функций.

Соседние файлы в папке Лекции