Московскийгосударственный технический университет имени Н.Э. Баумана
Домашнеезадание по курсу: “Технология XML”
Тема:“Технология XSLT”
Выполнила:студентка Заварзина В.В.
Проверил:Гапанюк Ю.Е.
Москва,2010
Содержание
Введение
XSLTкак язык
Преобразования
Области применения XSLT
XSLT в архитектуреклиент-сервер
XSLT на стороне сервера
XSLT на стороне клиента
Пространство имен вXSLT
XSLT и другие языки
Введение
XSLTозначает eXtensibleStyleSheet Languagefor Transformation,что на русский язык традиционно переводится как “расширяемый язык стилей дляпреобразований”. Работа над XSLTбыла инициирована проектом XSL- eXtensible StyleSheetLanguage (расширяемым языкомстилей).
СпецификацияXSLT гласит, что это язык дляпреобразования одних XML– документов в другие XML– документы. Но по мере развития язык перерос ее и теперь уместнее сказать, чтоXSLT – это язык для преобразованияструктуры документов.
XSLTкак язык
Любоепреобразование можно условно поделить на 3 составляющие:
1. Обращениек преобразуемому объекту;
2. Созданиерезультата преобразования;
3. Логика,связывающая первые два действия и направляющая процесс преобразования.
Применительнок преобразованию XML – документовпервая подзадача означает получение информации, которую этот документ содержит– в том числе и информацию о структуре, которая является неотъемлемой егочастью. Обращение в данном случае имеет несколько смыслов, в том числе –опрашивать, делать запросы, вычислять, выбирать; в общем смысле – задавать одокументе вопросы и получать на них ответы. Для этой цели в XSLTслужитязык, называемый XPath– язык путей в XML – документах. XPathявляется лаконичным, но при этом очень мощным средством обращения к XML– документам. Роль XPath в XSLTтак велика, что их можно было бы считать единым целым, если бы только XPathне использовался также и в других языках, предназначенных для работы с XML.
Втораяи третья условные части преобразования являются прерогативой самого XSLT.XSLT – это XML– язык в полном смысле этого слова: программы на XSLTявляются хорошо оформленными XML– документами. XSLT такжеиспользует пространство имен; практически все имена, которые встречаются в XSLTрассматриваются как расширенные имена, характеризуемые локальной частью вкупе сURI – уникальным идентификаторомпространства имен.
Вотличие от традиционных императивных языков программирования, преобразование в XSLTне является последовательностью действий, которую необходимо выполнить длядостижения результата. Преобразование – это набор шаблонных правил, каждое изкоторых определяет процедуру обработки определенной части документа.
XSLT– интерпретация “Hello? World!”,когда мы преобразуем документ:
/>
СинтаксисXSLT, являющийся чистым XML,может показаться для языка программирования не совсем обычным, однако, вряд ликакой другой синтаксис был бы более удобным.
Преобразования
Впреобразовании в основном участвуют три документа:
— входящий документ, который подвергается преобразованию;
— документ, который описывает само преобразование;
— выходящий документ, который является результатом преобразования.
СхемаXSLT – преобразования
/>
Процессорполучает входящий документ и преобразование, и, применяя правилапреобразования, генерирует выходящий документ – такова в общем внешняя схемакартины. На самом деле процессор оперирует не самими документами, адревовидными моделями их структур – именно структурными преобразованиямизанимается XSLT, оставляя за кадромсинтаксис, который эти структуры выражает.
Древовидныеструктуры XSLT
/>
Хотяпрактически все процессоры выполняют каждый из трех этапов, рабочей областью XSLTявляется только второй этап, этап преобразования. XSLTпрактически не контролирует парсинг входящего документа, как правило этимзанимается встроенный или внешний SAX-или DOM- парсер.
Сериализацияявляется процессом создания физической интерпретации результирующего дерева, аесли эта задача делегируется XSLT– процессору, то преобразованию под силу контролировать физический выводгенерируемого документа.
Сериализацияв XSLT
/>
Областиприменения XSLT
Вотличие от языка XML, предметнуюобласть XSLTзадать очень легко. XSLT следует применять там, где необходимо преобразованиеодного документа в другой.
Естественно,XSLT имеет также и некоторые ограничения:
— XSLT не подходит для описания преобразований с очень сложной логикой;
— XSLT не подходит для преобразований, которые требуют сложных вычислений.
Первоеограничение связано с тем, что преобразование XSLT – это всего лишь наборэлементарных правил. В подавляющем большинстве случаев этого достаточно дляописания преобразования, однако встречаются также и такие задачи, для которыхданного набора правил будет недостаточно. Например, древовидные структуры могутописываться математическими выражениями, но при этом преобразование дляупрощения или вычисления этого дерева выражений может быть чересчур сложным дляXSLT.
Второеограничение является следствием простоты языка XPath,который используется в XSLT для вычислений. XPathпредоставляет только самые простейшие вычислительные конструкции, которых явнонедостаточно для сложных задач. Кроме того, функциональный стиль XSLT иотсутствие изменяемых переменных делают очень затруднительными многошаговые и циклическиевычисления.
XSLTв архитектуре клиент-сервер
Многиеиз систем, применяющих XSLT, так или иначе, сводятся к клиент-сервернойархитектуре, в которой клиент делает запрос, а сервер в качестве ответавозвращает некоторые данные. XSLT в таких решениях может использоваться дляприведения структуры данных из внутреннего формата сервера к некоторомувнешнему формату, понятному клиенту. Примером подобной системы может быть Web-сервер,предоставляющий клиентам информацию, которая динамически генерируется из базыданных.
Классическими широко применяемым решением для такого рода задачи являются серверныекомпоненты, сервлеты и различные скриптовые языки, которые преобразуют запросыклиента в запросы к базе данных, а затем оформляют результаты выполнения в видеHTML и отсылают клиенту.
Минусэтого решения в том, что оно слишком сильно зависит от презентации данных.Новая презентация или сравнительно серьезное исправление старой заставляют,чуть ли не полностью переписывать Web-приложение.
Вподобных системах достаточно эффективно используется связка XML+XSLT.Вместо того чтобы генерировать по данным HTML-презентацию,можно создать XML-документ, и, применяяпреобразования, возвращать клиенту именно тот результат, которого он ожидает.
Схемавзаимодействия XML и XSLTв архитектуре клиент-сервер
/>
Наэтой схеме нет четкой границы, которая отделяла бы клиент от сервера. Дело втом, что существует два принципиально различных способа использования XSLTв подобной архитектуре: преобразования могут выполняться как на сторонесервера, так и на стороне клиента.
XSLTна стороне сервера
ПрименениеXSLTна стороне сервера совершенно незаметно для клиента – он, как и раньше, в ответна свой вопрос получает HTMLили документ в другом требуемом формате. В данном случае связка XML+XSLTявляется дополнительным звеном, дополнительным уровнем абстракции, которыйпозволяет отделять данные от презентации, добиваясь простоты и универсальности.Создание преобразований для генерации HTMLпо имеющимся XML-документам – задачасовершенно иного плана, чем написание серверных приложений и программ, которыенепосредственно работают с результатами выполнения запросов к базе данных.
Минусомэтого способа является то, что мы все равно возвращаем клиенту представлениеданных, а не сами данные. Естественно, используя XSLT,множество доступных представлений расширить очень легко, но это множество в любомслучае будет ограничено. Для большинства Web-систем этого более чем достаточно, но существующие Web-технологиибольше ориентированы на представление данных, чем на сами данные – онистараются предвосхитить вопросы на заранее процедуры ответов.
XSLTна стороне сервера
/>
XSLTна стороне клиента
Идеяиспользования XSLT на стороне клиента заключается в том, чтобы отдавать клиентуотдельно нужные ему данные и отдельно преобразование, которое будет создаватьдля этих данных требуемое представление. Четкое разделение данных и ихпредставления предоставит клиенту полную свободу распоряжаться полученнойинформацией. Преобразование в этом случае всего лишь предлагает возможнуютрактовку этой информации, ни к чему не обязывая.
Ещеодним достоинством выполнения преобразований на стороне клиента являетсяразгрузка сервера, ведь такой подход освобождает его от необходимости выполнятьпроцедуру преобразования.
Основнымограничением этого способа является предложение, что программное обеспечение настороне клиента сможет выполняться преобразования. К сожалению, решение такоговида может применяться только в очень ограниченном числе случаев – когдадостоверно известно, что целевой клиент поддерживает XSLT.
преобразованиедокумент сервер стиль
Пространствоимен в XSLT
Длятого, чтобы выделить элементы и атрибуты, которые принадлежат логической схемеXSLT, в этом языке применяется механизм пространств имен. Это означает, что вдокументе, преобразования элементы, относящиеся к XSLT, должны принадлежать егопространству имен.
Уникальныйидентификатор ресурса пространства имен XSLT имеет вид: www.w3.org/199/XSL/Transform
Примерпростого преобразования, в котором объявлено пространство имен:
/>
XSLTи другие языки
Несмотряна то, что XSLT является вполне самостоятельным языком, его очень частоиспользуют как составную часть в проектах, которые пишутся на других языкахпрограммирования. Тому существует множество причин. Попытаемся выделить главныеиз них:
· Традиционныеимперативные языки программирования очень плохо подходят для обработкидревовидно структурированных данных. Программы, действия в которых непременновыполняются последовательно одно за другим, в общем случае не могут эффективно(с точки зрения компактности и понятности кода) обработать сложныеиерархические структуры.
· Внекоторых случаях XSLT-преобразования документов оказываются, наоборот,настолько сложны, что из соображений эффективности и простоты бывает намноголегче использовать традиционные языки.
· Вомногих проектах использование XSLT может обеспечить лёгкую и гибкую интеграцию.Например, если одним из этапов процедуры обмена XML-данными будет XSLT-преобразование,расширение количества форматов, известных системе, будет производиться недописыванием исходного кода, а добавлением преобразований. А поскольку XSLTобеспечивает не только синтаксические, но и семантические преобразования, тоесть преобразования на структурном уровне, роль этого языка в проектахинтеграции, основанных на использовании XML, может быть очень велика.
· ИспользованиеXSLT-преобразований может коренным образом упростить созданиеweb-ориентированных приложений. Надо сказать, что во многих случаяхXSLT-преобразования просто избавляют от необходимости программировать что-либона других языках; однако даже тогда, когда без традиционных подходов необойдёшься, XSLT служит хорошую службу, обеспечивая простой, удобный и легконастраиваемый вывод фрагментов HTML.