Алексей Валиков - Технология XSLT
Загрузить Saxon можно по адресу http://saxon.sourceforge.net. Пользователям Windows мы рекомендуем воспользоваться версией Instant Saxon, архив которой состоит из единственного файла saxon.exe. Для того чтобы выполнить пример при помощи Instant Saxon, следует запустить команду:
saxon -о result.xml source.xml stylesheet.xsl,
где result.xml — имя выходящего документа, source.xml — имя входящего документа, a stylesheet.xsl — имя файла преобразования.
Справочная информация книги сосредоточена в развернутом виде в главах 6, 7 и 8, а также в краткой форме в приложениях 2 и 3. Книга также содержит подробный глоссарий.
Структура книги
Книга состоит из двенадцати глав и четырех приложений, содержание которых мы кратко опишем ниже.
Глава 1. Введение в XML
Первая глава книги об XSLT не случайно посвящена языку XML (от англ. extensible Markup Language — расширяемый язык разметки). XML — это фундаментальная концепция, по отношению к которой XSLT является прикладной технологией и поэтому для эффективного применения XSLT нужно хорошо понимать основы XML.
Мы разделяем мнение множества экспертов о том, что лучшая документация по XML — это спецификация языка, снабженная внятными аннотациями, комментариями и примерами. Первая глава описывает синтаксис и конструкции языка XML именно в том виде, в каком они приведены в технической рекомендации Консорциума W3, акцентируя внимание на важных с точки зрения XSLT моментах.
Помимо синтаксиса и физической модели ХМL-документа, в первой главе раскрывается концепция XML, идея, которая за всем этим стоит. Краткий обзор практических аспектов использования XML подкреплен описаниями архитектуры типовых проектов, основанных на XML-технологиях.
Завершающая часть первой главы посвящена истории языка XML.
Глава 2. Введение в XSLT
Вторая глава содержит базовую информацию о языке XSLT. В ней поясняется потребность в преобразованиях структурированных документов, описывается архитектура преобразований, синтаксические и семантические особенности XSLT как языка.
Особое внимание уделяется практическому использованию XSLT в составе информационных систем. Во второй главе рассматриваются наиболее естественные области применения технологии XSLT.
Глава заканчивается краткой справкой об истории языка XSLT.
Глава 3. Идея и модель языка XSLT
Третья глава посвящена моделям, которые используются в языке XSLT. В ней рассматривается древовидная модель XML-документа, модель данных, используемая в языках XSLT и XPath, переменные, выражения, а также модель самого процесса преобразования. Можно сказать, что третья глава представляет взгляд на XSLT "изнутри". Эта информация важна для понимания того, как работают преобразования и почему это работает именно так.
Глава 4. Структура преобразования
Четвертая глава рассказывает о том, что представляет собой программа на языке XSLT, как она строится и из каких частей состоит. Кроме этого, рассматривается упрощенная форма преобразований, модульная организация преобразований и способы объединения преобразования и преобразуемого документа. В четвертой главе также освещаются такие чисто практические аспекты, как литеральные элементы результата и шаблоны значений атрибутов.
Глава 5. Шаблонные правила
В пятой главе рассматриваются основные структурные единицы преобразования, называемые шаблонными правилами, а также множество особенностей их использования: способы вызова, режимы выполнения, типы, приоритет, конфликты и так далее. Дополнительно разбирается использование в шаблонах переменных и параметров.
Глава 6. XPath-выражения
Шестая глава посвящена языку XPath, который используется в XSLT для выборок и вычислений на ХМL-документах. В этой главе рассматривается синтаксис и семантика XPath-выражений и паттернов XSLT и детально описываются функции базовой библиотеки XPath.
Глава 7. Основные элементы XSLT
В этой главе описываются основные элементы XSLT — элементы, которые непосредственно создают части выходящего документа, вычисляют выражения, производят копирование, обеспечивают условную и циклическую обработку. Основные элементы предоставляют "базовый набор услуг", без которых, как правило, не обходится ни одно преобразование.
Глава 8. Дополнительные элементы и функции языка XSLT
В восьмой главе разбираются возможности, которые предоставляются дополнительными элементами и функциями языка XSLT. Эти элементы и функции предоставляют сервисные возможности, которые не связаны непосредственно с созданием выходящего документа, но имеют значение для построения сложных преобразований. К этим возможностям относятся создание и обработка ключей, манипуляции с пробельным пространством, обращение ко внешним XML-документам, сортировка и многое другое.
Глава 9. Использование XSLT совместно с другими языками программирования
Эта глава поможет сделать первые шаги разработчикам, которым необходимо использовать XSLT совместно с другими языками программирования. В ней приведены простые примеры вызова преобразований из программ на таких языках программирования, как Object Pascal, C/C++, VBScript, JavaScript, Java и некоторых других.
Глава 10. Расширения языка XSLT
Десятая глава посвящена вопросам создания и использования функций и элементов расширения. В этой главе разбирается процесс написания и подключения функций и элементов расширения на примере интерфейсов таких процессоров, как Saxon, Xalan и Oracle XSLT Processor, а также вопросы, связанные с обеспечением переносимости и отработкой исключительных ситуаций в преобразованиях, использующих расширения.
Глава 11. Готовые решения
Одиннадцатая глава написана для тех, кто не любит изобретать лишний раз велосипед. В ней описываются решения некоторых наиболее распространенных проблем, как-то: группировка, циклические и рекурсивные вычисления, операции над множествами и так далее.
Глава 12. Развитие технологий
Последняя глава книги позволяет забежать немного вперед и предугадать, что будет с языком XSLT в следующих его версиях. Выводы, которые делаются в этой главе, основаны на изменениях, предложенных в черновой версии XSLT 1.1, а также на требованиях, которые были сформированы ко второй версии языка. Анализ этой информации в будущем позволит безболезненно перейти на новую версию XSLT.
Приложение 1. Обзор XSLT-процессоров
В первом приложении произведен обзор наиболее распространенных XSLT- процессоров с тем, чтобы помочь читателю выбрать наиболее подходящий инструмент. Помимо этого, в начале приложения приводятся статистические сведения о производительности и популярности различных XSLT-процессоров.
Приложение 2. Краткий справочник элементов и атрибутов XSLT
Второе приложение содержит справочную информацию об элементах и атрибутах языка XSLT. В одну таблицу сведены синтаксис элементов и атрибутов и краткое описание их семантики.
Приложение 3. Краткий справочник функций XSLT и XPath
Третье приложение содержит справочную информацию о функциях базовой библиотеки языка XPath и функциях языка XSLT, которые дополняют эту библиотеку.
Приложение 4. Интернет-ресурсы, посвященные XSLT
В четвертом приложении приведен небольшой список полезных интернет-ресурсов, так или иначе связанных с XSLT. Сюда относятся списки часто задаваемых вопросов, уроки по XSLT, архивы библиотек и инструментов, официальные спецификации Консорциума W3 и так далее.
Соглашения
Расширенная форма Бэкуса-Наура
Несмотря на то, что эта книга главным образом посвящена языку XSLT, в ней также описываются расширяемый язык разметки XML и язык обращения к частям ХМL-документов, называемый XPath. Подробное и точное описание этих языков невозможно без четких определений синтаксических конструкций.
Для описания синтаксиса рассматриваемых языков мы будем использовать расширенные формы Бэкуса-Наура (РФБН, или, по-английски, Extended Backus-Naur Form, EBNF). EBNF — это современная модификация методологии, которая впервые была использована для описания языка программирования Алгол-60. За прошедшие десятилетия формы Бэкуса-Наура были доработаны множеством авторов и сейчас в расширенном виде используются для описания ряда языков программирования различной степени сложности. EBNF-нотация также широко используется в технических рекомендациях Консорциума W3, которые фактически и являются стандартами рассматриваемых нами языков.