Что такое код xslt_free

Содержание

Что такое код xslt_free

xslt_process — выполняет XSLT transformation.

Описание

mixed xslt_process (resource xh, string xml, string xsl [, string result [, array arguments [, array parameters]]])

xslt_process() это краеугольный камень нового расширения XSLT.Она даёт возможность выполнять XSLT-трансформацию с использованием почти всех типов источников ввода.Это делается с помощью буферов аргументов — концепции, взятой из Sablotron XSLT-процессора (в настоящее время — единственного XSLT-процессора, который поддерживается данным расширением).

Самая простая трансформация функцией xslt_process() — это трансформация XML-файла XSLT-файлом с помещением результата в третий файл, содержащий новый XML (или HTML)-документ.Сделать это с помощью sablotron действительно довольно легко .

Пример 1. Использование xslt_process() для трансформации XML-файла и XSL-файла а новый XML-файл

Хотя эта функциональность великолепна, часто, особенно в окружении web, вам понадобится выводить результату напрямую.Следовательно, если вы опустите третий аргумент для функции xslt_process() (или предоставите NULL-значение этого аргумента), она автоматически возвратит значение XSLT-трансформации, вместо записи его в файл .

Пример 2. Использование xslt_process() для трансформации XML-файла и XSL-файла в переменную, содержащую результирующие XML-данные

Это были два простейших случая XSLT-транфсормации, и я могу с уверенностью сказать — самые распространённые случаи, однако иногда вы получаете ваш XML и XSLT-код из внешних источников, таких как БД или сокет.В этих случаях у вас будут XML и/или XSLT-данные в переменной — и в работающих приложениях перегрузка при дампе их в файл может оказаться значительной.Вместо файлов как аргументов XML и XSLT для xslt_process() , вы можете специфицировать «заглушки документов», которые затем замещаются значениями из массива аргументов (5-й параметр функции xslt_process() ). Далее идёт пример процессинга XML и XSLT в результирующую переменную вообще без использования файлов.

Пример 3. Использование xslt_process() для трансформации переменной, содержащей XML-данные, и переменной, содержащей XSL-данные, в переменную, содержащую результирующие XML-данные

Наконец, последний аргумент функции xslt_process() это любые параметры, которые вы хотите передать в XSLT-документ.Можно получить доступ к этим параметрам внутри ваших XSL-файлов с помощью инструкции .

Отладка XSLT Debugging XSLT

Код XSLT можно отлаживать в Visual Studio. You can debug XSLT code in Visual Studio. Отладчик XSLT поддерживает задание точек останова, Просмотр состояний выполнения XSLT и т. д. The XSLT debugger supports setting breakpoints, viewing XSLT execution states, and so on. Отладчик XSLT можно использовать для отладки таблиц стилей XSLT или XSLT-приложений. The XSLT debugger can be used to debug XSLT style sheets or XSLT applications.

Можно выполнить код по одной строке за раз, пошаговым выполнением, пошаговым выполнением или выходом из кода. You can execute code one line at a time by stepping into, stepping over, or stepping out of the code. Команды для использования функций обработки кода отладчика XSLT аналогичны командам для других отладчиков Visual Studio. The commands for using the code-stepping functionality of the XSLT debugger are the same as those for the other Visual Studio debuggers.

При запуске отладки отладчик XSLT открывает окна, в которых отображается входной документ и выход XSLT. Once you start debugging, the XSLT debugger opens windows to show the input document and the XSLT output.

Отладчик XSLT доступен только в выпусках Visual Studio Professional и Enterprise. The XSLT debugger is only available in the Professional and Enterprise editions of Visual Studio.

Отладка из редактора XML Debug from the XML editor

Отладчик можно запустить при наличии таблицы стилей или входного XML-файла, открытого в редакторе. You can start the debugger when you have either a style sheet or an input XML file open in the editor. Это позволяет выполнять отладку по мере разработки таблицы стилей. This lets you debug as you’re designing the style sheet.

Откройте таблицу стилей или XML-файл в Visual Studio. Open the style sheet or XML file in Visual Studio.

Выберите запустить отладку XSLT в меню XML или нажмите клавишу ALT +F5. Select Start XSLT Debugging from the XML menu or press Alt+F5.

Отладка из приложения, использующего XSLT Debug from an app that uses XSLT

При отладке приложения можно выполнить шаг с заходом в XSLT. You can step into XSLT while debugging an application. При нажатии клавиши F11 при вызове System.Xml.Xsl.XslCompiledTransform.Transform отладчик может выполнить шаг с заходом в код XSLT. When you press F11 on an System.Xml.Xsl.XslCompiledTransform.Transform call, the debugger can step into the XSLT code.

Выполнение шага со входом в код XSLT из класса XslTransform не поддерживается. Stepping into XSLT from the XslTransform class is not supported. Класс XslCompiledTransform является единственным обработчиком XSLT, поддерживающим вход в код XSLT при отладке. The XslCompiledTransform class is the only XSLT processor that supports stepping into XSLT while debugging.

Начало отладки приложения XSLT To start debugging an XSLT application

При создании объекта XslCompiledTransform устанавливайте в своем коде параметр enableDebug в значение true . When instantiating the XslCompiledTransform object, set the enableDebug parameter to true in your code. Это заставляет обработчик XSLT создавать отладочные данные при компиляции кода. This tells the XSLT processor to create debug information when the code is compiled.

Нажмите клавишу F11 , чтобы выполнить шаг с заходом в код XSLT. Press F11 to step into the XSLT code.

Таблица стилей XSLT загружается в новом окне документа и запускается отладчик XSLT. The XSLT style sheet is loaded in a new document window and the XSLT debugger starts.

Можно также добавить точку останова в таблицу стилей и запустить приложение. Alternatively, you can add a break point to the style sheet and run your application.

Пример Example

Ниже приведен пример программы C# XSLT. The following is an example of a C# XSLT program. Он показывает, как включить отладку XSLT. It shows how to enable XSLT debugging.

Профилировщик XSLT XSLT profiler

Профилировщик XSLT — это средство, которое позволяет разработчикам измерять, оценивать и нацелить проблемы производительности в коде XSLT, создавая подробные отчеты о производительности XSLT. The XSLT profiler is a tool that lets developers measure, evaluate, and target performance-related problems in XSLT code by creating detailed XSLT performance reports. Дополнительные сведения см. в статье Профилировщик XSLT. For more information, see XSLT profiler.

Применение языка преобразований XSLT

Язык преобразований XSLT

Во второй лекции мы уже рассматривали пример с использованием XSLT . В этой лекции мы рассмотрим эту технологию более подробно. XSL (eXtensible Stylesheet Language) переводится как Расширяемый Язык Стилей, и представляет собой язык для создания стилей XML документов. XSLT(XSL Transformations) — это язык преобразований XSL и является его частью. Стиль XSLT предназначен для преобразования иерархической структуры и формата документа XML . Результатами преобразования могут стать XML — файл , текстовый файл , программный код, HTML — файл , файл в формате PDF , и так далее. Этот язык предоставляет мощные возможности для манипуляции данными, информацией, текстом в иерархическом виде.

А это как раз то, что нужно для генерации кода. Применение XSLT может существенно помочь в генерации кода. Кроме того, он предоставляет удобную альтернативу технологии шаблонов Т4.

XSLT был разработан консорциумом W3C (World W >XSLT 1.0 стала рекомендацией 16 ноября 1999 года, а версия XSLT 2.0 стала рекомендацией 23 января 2007 года. Обе версии используются достаточно активно, и в этой лекции мы рассмотрим ту базовую функциональность, которая является для них общей. А это значит, что рассматривать будем в основном первую версию. Также упомянем некоторые команды из второй версии.

Как работает XSLT

Модель XSLT включает в себя такие части как:

  • документы XML,
  • стили XSLT ,
  • процессор XSLT ,
  • выходные документы.

Документы XML являются входными данными, которые нужно преобразовать в другие документы. Документ стиля XSLT является корректным (well formed) документом XML и содержит набор правил для выполнения преобразования. Иными словами, документ стиля является шаблоном.

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

Процессоры XSLT имеют множество реализаций и встроены во многие браузеры вроде Internet Explorer, Firefox, Mozilla, Opera и другие. В Internet Explorer используется инструмент MSXML, разработанный Microsoft. XSLT — процессор встроен в Internet Explorer, начиная с версии 4.5. Сгенерированный результат примеров данной лекции можно просматривать путем открытия XML -файлов в одном из браузеров. В конце лекции мы рассмотрим возможности запуска трансформации программным путем, используя соответствующие классы языка программирования.

Илон Маск рекомендует:  Что такое код readline_clear_history

XPath

Другой частью технологии XSL является язык XPath, предназначенный для доступа к узлам документа XML путем задания путей и выражений. Язык Xpath используется в файлах стилей для навигации внутри XML -документов, определения частей исходного XML -документа, которые совпадают с одним или более заранее заданными шаблонами. При нахождении совпадения процессор XSLT применит к нему соответствующие правила из файла стиля и преобразует его в часть результирующего документа. В файлах стилей XSLT выражения XPath используются весьма интенсивно.

Применение XSLT

Язык XSLT состоит из множества инструкций, записанных в виде тегов. Имя каждой инструкции обычно начинается с символов xsl . Для выполнения трансформации документ стиля XSLT должен являться корректным документом XML .

Для преобразования документа XML необходимо добавить в начало документа инструкцию, подобную следующей:

XSL — файл стилей обычно содержит множество элементов, самым главным из которых является элемент xsl :stylesheet . Именно он указывает, что данный XML — файл является файлом стилей. Кроме него могут содержаться другие элементы, например xsl :template , xsl :value-of . Документ XML и файл стиля передается в XSLT — процессор , который обрабатывает данные файлы, выполняет преобразование и выводит результат трансформации.

Ниже представлен документ XML , содержащий список языков программирования.

Необходимо вывести этот список в формате HTML . Для этой цели используем инструкцию xsl :for-each , которая будет применять часть шаблона к секциям документа, наименование которых указано в атрибуте select . В нашем случае укажем select=»languages/language» .

Файл стилей будет применяться следующий:

Шаблон внутри xsl :for-each выводит содержимое каждого элемента language из languages . Для этой цели используется инструкция xsl :value-of и задаваемый атрибут select=».» . Это означает, что процессор должен выбирать текст содержимого текущего элемента в документе. Кроме отражения содержимого можно задавать имена конкретных тегов, а также атрибутов для выборки значений, хранящихся в них. Примеры будут рассмотрены далее.

Откроем XML файл через Internet Explorer или другой браузер . Будет выведен такой текст:

Мои любимые языки:

  • C#
  • Visual Basic
  • Delphi
  • Prolog

Одним из самых главных элементов в стиле является xsl :template . Служит для определения повторно используемого шаблона и содержит правила, по которым будет преобразован документ XML . В атрибуте match содержится выражение для отбора узлов, к которым будет применен шаблон . Также может присутствовать атрибут name . В этом случае есть возможность вызывать шаблон по имени инструкцией xsl :apply-templates .

Для повторения вывода шаблона для каждого элемента документа применяется инструкция xsl :for-each . Шаблон выполняется для каждого элемента, соответствующего условию, указанному в атрибуте select .

Инструкция xsl :value-of служит для вычисления выражения, записанного в атрибуте select с последующим выводом результата в том месте, где расположен сам элемент.

Фильтрация

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

Один из них — это применение атрибута select инструкции xsl :for-each , а второй — применение атрибута match элемента xsl :template . Применение match мы рассмотрим позже, а сейчас рассмотрим select .

Изменим немного файл с данными: добавим атрибут high , обозначающий, является ли язык из нашего списка языком высокого уровня. Также расширим сам список языков.

Заметим, что значение false для атрибута high стоит только для значения «Assembler» . Изменим немного файл таблицы стилей:

В секции [@ high =’true’] мы указываем, что выбирать следует только те узлы документа, у которых атрибут high имеет значение ‘true’ . Знак @ является символом, указывающим на то, что после него стоит имя атрибута.

Посмотрим на результат:

Языки высокого уровня:

  • C#
  • Visual Basic
  • Delphi
  • Prolog
  • Java
  • Perl

Как видим, значение «Assembler» не отображается в списке языков, то есть процессор XSLT отфильтровал данные согласно заданным условиям.

Сортировка

Кроме фильтрации другой часто применяемой операцией при генерации кода является сортировка . Атрибут order-by инструкции xsl :for-each служит для сортировки результата, для обозначения порядка прохода узлов документа при выполнении трансформации. Сортируемые поля перечисляются через точку с запятой, а также имеют перед своим названием знаки «+» или «-» , означающие сортировку по возрастанию или убыванию.

Рассмотрим немного измененный вариант документа — вместо атрибута high будем использовать элемент level , принимающий значения high или low . А имя языка запишем в элемент name .

В следующей таблице стилей для инструкции xsl :for-each применим атрибут order-by со значением +name , где знак плюса означает, что надо отсортировать по возрастанию.

В атрибуте select мы фильтруем по значению элемента level . Также в атрибуте select инструкции xsl :value-of указываем непосредственно имя элемента.

Получается такой результат.

Языки высокого уровня:

  • C#
  • Delphi
  • Java
  • Perl
  • Prolog
  • Visual Basic

Названия языков отсортированы в алфавитном порядке и значение «Assembler» не отображается в списке.

Другим способом сортировки является применение элемента xsl :sort путем вложения в xsl :for-each или в xsl :apply-templates . Элемент xsl :sort имеет атрибуты select и order , которые указывают на элементы, по которым должна осуществляться сортировка и на порядок сортировки соответственно.

Вложенные шаблоны

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

В данном примере у нас будут два шаблона. Один будет основной, для таблиц, а другой будет вызываемым из него, для полей таблиц. Для вызова шаблона используется инструкция xsl :apply-templates .

XSLT -процессором будет сформирован следующий HTML -код:

При открытии сгенерированного результата в браузере будет показано следующее:

Инструкция xsl :apply-templates позволяет вызывать определенный шаблон и выполнять его много раз. Кроме того она является более наглядной и удобной альтернативой xsl :for-each .

Расширение файла XSLT

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

  • Что такое файл .xslt?
  • Какое программное обеспечение мне нужно открыть файл .xslt?
  • Как файл .xslt быть открыты, отредактированы или напечатано?
  • Как конвертировать .xslt файлов в другой формат?

Оглавление

  • ✅ Extensible Stylesheet Language Transformations
  • �� Конвертеры файлов .xslt
  • �� Ошибки, связанные с файла .xslt.

Мы надеемся, что вы найдете на этой странице полезный и ценный ресурс!

1 расширений и 0 псевдонимы, найденных в базе данных

✅ Extensible Stylesheet Language Transformations

Другие типы файлов могут также использовать расширение файла .xslt.

�� Расширение файла .xslt часто дается неправильно!

По данным Поиск на нашем сайте эти опечатки были наиболее распространенными в прошлом году:

Это возможно, что расширение имени файла указано неправильно?

Мы нашли следующие аналогичные расширений файлов в нашей базе данных:

�� Не удается открыть файл .xslt?

Если дважды щелкнуть файл, чтобы открыть его, Windows проверяет расширение имени файла. Если Windows распознает расширение имени файла, файл открывается в программе, которая связана с этим расширением имени файла. Когда Windows не распознает расширение имени файла, появляется следующее сообщение:

Windows не удается открыть этот файл:

Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать для его открытия.

Если вы не знаете как настроить сопоставления файлов .xslt, проверьте FAQ.

�� Можно ли изменить расширение файлов?

Изменение имени файла расширение файла не является хорошей идеей. Когда вы меняете расширение файла, вы изменить способ программы на вашем компьютере чтения файла. Проблема заключается в том, что изменение расширения файла не изменяет формат файла.

Если у вас есть полезная информация о расширение файла .xslt, напишите нам!

�� Оцените нашу страницу XSLT

Пожалуйста, помогите нам, оценив нашу страницу XSLT в 5-звездочной рейтинговой системе ниже. (1 звезда плохая, 5 звезд отличная)

Языки XSL(T)

В HTML используются предопределенные теги, значение и способ отображения которых хорошо понятны.

CSS используется для добавления стилей элементам HTML.

В XML используются теги не определенные заранее, что делает значение каждого тега не ясным изначально.

Например, элемент

в HTML означает таблицу и ничего другого. В XML этот элемент может означать все что угодно — таблицу, стол и т. д. — и браузеры не знают наверняка, как его отображать.

И здесь на помощь приходить XSL, который позволяет описать, как элементы XML должны отображаться в браузере.

XSL — больше, чем просто язык таблицы стилей

XSL состоит из четырех частей:

  • XSLT — язык преобразования XML документов
  • XPath — язык для навигации по элементам XML документа
  • XSL-FO — язык для форматирования XML документов (разработка остановлена в 2013 году)
  • XQuery — язык, позволяющий делать выборки из XML данных

Примечание: Представив в 2013 году модуль CSS3 Paged Media Module, консорциум W3C определил новый стандарт форматирования документов. Таким образом, с 2013 года CSS3 позиционируется, как замена языка XSL-FO.

Что такое XSLT?

  • XSLT означает преобразование или трансформация XSL (от англ. XSL Transformations)
  • XSLT является наиболее важной частью языка XSL
  • XSLT преобразовывает XML документ в другой XML документ
  • XSLT для навигации по XML документу использует язык XPath

XSLT — наиболее важная часть языка XSL

XSLT используется для преобразования XML документа в другой XML документ или в другой тип документа, распознаваемый браузером, например, HTML и XHTML. Обычно, XSLT делает это преобразовывая каждый XML элемент в (X)HTML элемент.

При помощи XSLT можно добавлять/удалять элементы и атрибуты в конечный файл. Также, можно реорганизовывать и сортировать элементы, выполнять тесты, определять, какие элементы скрыть или отобразить, и многое другое.

В общих словах процесс преобразования можно описать следующим образом — XSLT преобразовывает исходное дерево XML в XML дерево-результат.

XSLT использует XPath

Для поиска информации в XML документе XSLT использует язык XPath. Язык XPath (подробнее см. Учебник XPath) позволяет перемещаться по элементам и атрибутам XML документа.

Как это работает?

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

Поддержка XSLT

Все основные браузеры поддерживают XSLT и XPath.

XSL Transformer — XSLT

This XSL Transformer (XSLT) let’s you transform an XML file using an XSL (EXtensible Stylesheet Language) file. You can also chose your indentation level if the result is an XML file. Thanks a million to Bram Ruttens aka «skeltavik» for identifying security issues in this tool and having the integrity to report them.

The XSL Transformer fully supports XML namespaces, but the declarations MUST be explicit and MUST be on the root XML element of both your XML file and your XSL file. See the XSLT Examples section for details.

*The maximum size limit for file upload is 2 megabytes. Results bigger than 1 megabyte will be written to a new window for performance reason and to prevent your browser from being unresponsive.

Введение в XSLT

XSLT представляет собой способ для XML-документов в другие XML или документы язык документа XHTML.

XPath это язык для навигации в XML-документах.

Вы должны иметь базовые знания

Перед тем, как продолжать учиться, мы должны иметь общее представление о следующем:

  • HTML / XHTML
  • XML / пространство имен XML
  • XPath

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

Что такое XSLT?

  • преобразование XSLT XSL средство (XSL Transformations)
  • XSLT является наиболее важной частью XSL
  • XSLT может преобразовать документ XML в другой документ XML
  • XSLT использует XPath для навигации в XML-документах
  • XSLT является стандартом W3C

XSLT = преобразование XSL

XSLT является наиболее важной частью XSL.

XSLT используется для преобразования документа XML в другой документ XML, или может быть идентификация браузера других типов документов, таких как HTML и XHTML. Как правило, XSLT каждым элементом XML преобразуется в (X) HTML элементов, чтобы завершить эту работу.

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

Одно общее утверждение описывает процесспреобразования, XSLT к исходному XMLдерева в результирующее дерево как XML.

XSLT использует XPath

XSLT использует XPath, чтобы найти информацию в документе XML. XPath используется для навигации по элементов и атрибутов в XML-документе.

Если вы хотите сначала узнать XPath, пожалуйста , посетите наш XPath учебник .

Как это работает?

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

XSLT является стандартом W3C

XSLT в 16 ноября 1999 года был создан в качестве стандартов W3C.

Для получения более подробной информации о W3C деятельности XSLT, пожалуйста , посетите наш W3C учебник .

Генерация XSLT из XSLT

Требуется сгенерировать XSLT-код из другого XML-представления. Или пре­образовать один код на XSLT или псевдо-XSLT в другой.

Иногда меня раздражают два аспекта управляющих конструкций в XSLT. Первый – отсутствие конструкции if-then-elsif-else; второй – отсутствие настоящих циклов. Конечно, я знаю о существовании команд xsl:choose и xsl:for-each, но у каждой из них есть недостатки. Так, xsl:choose мне не нравится, потому что у элемента choose нет никакого иного назначения, кроме организации дополнительного уровня вложенности. А xsl:for-each – не столько цикл, сколько конструкция для итерирования. Чтобы эмулировать поведение цикла со счетчиком, приходится прибегать к рекурсии или методу Пиза (см. рецепт 2.5), а это не красиво.

В следующем примере иллюстрируется преобразование в XSLT кода, напи­санного на псевдо-XSLT, в котором имеются элементы xslx:elsif, xslx:else и xslx:loop. Поскольку на самом деле их нет, то мы создадим таблицу стилей, кото­рая заменит эти элементы реально существующими конструкциями. Одновременное наличие элементов xsl:if и xslx:if выглядит нелепо, но было бы неправиль­но использовать стандартное пространство имен XSLT для дополнительных элементов; не исключено, что в будущей версии стандарта XSLT они будут опре­делены.

Hередко рядом с bar встречается и foo!

Слово baz – верный признак сленга

Гм, сказать-то нечего, но повторю это 10 раз.

foo foo! Никто не говорит foo foo!

А ниже приведена таблица стилей, которая генерирует настоящий XSLT-код из такого псевдокода. Для простоты мы не включили некоторые семантические проверки, например, наличие нескольких xsl:else при единственном xsl:if или дублирование параметров во вложенных циклах:

Глава 1

Добро пожаловать в мир языка преобразований расширенной таблицы стилей, XSLT (Extensible Stylesheet Language Transformations). Эта книга послужит вам путеводителем в огромном мире XSLT, который каждую минуту расширяется непредсказуемым образом. Мы хотим, чтобы этот мир стал и вашим миром. Нам нужно охватить весьма большой материал, поскольку в наши дни XSLT используется в очень интересных местах и очень интересными способами. В этой книге вы увидите, как это все работает.

Собственно XSLT представляет собой средство обработки и форматирования содержимого документов XML. XML уже стал очень популярным, теперь настала очередь XSLT. XML дает вам возможность структурировать данные в документах, a XSLT позволяет работать с содержимым документов XML — оперировать содержимым и создавать другие документы (например, при сортировке XML записей базы данных сотрудников или при сохранении данных в документ HTML, а также при детальном форматировании данных).

С содержимым документов XML можно работать, написав собственную программу, реализующую интерфейс с приложениями разборщика (parser) XML, однако при этом приходится писать код программы самостоятельно. При помощи XSLT вы можете выполнять задачи подобного же рода, не прибегая к программированию. Вместо того чтобы писать код обработки содержимого документов XML на Java, Visual Basic или С++, можно просто указать при помощи XSLT, что вы хотите сделать, и процессор XSLT сделает все остальное. Именно для этих целей и предназначен XSLT, и в мире XML он выходит на ключевые позиции.

XSL = XSLT + XSL-FO

Сам XSLT в действительности является частью более крупной спецификации — расширенного языка таблиц стилей, Extensible Stylesheet Language, или XSL. XSL предназначен для задания точного, до миллиметра, формата документов.

Форматирующая часть XSL, представляющая гораздо более крупную спецификацию, чем XSLT, основана на специальных форматирующих объектах (formatting objects) — эта часть XSL часто называется XSL-FO (или XSL:FO, или XSLFO). XSL-FO — сложная тема, поскольку задание стилей документов при помощи форматирующих объектов может оказаться весьма запутанным процессом. Фактически XSLT изначально был добавлен в XSL для того, чтобы проще осуществлять преобразование документов XML в документы, основанные на форматирующих объектах XSL-FO.

Эта книга посвящена XSLT, но рассматривается также и введение в XSL-FO, в том числе способ использования XSLT для преобразования документов в форму XSL-FO; в конце концов, XSLT впервые был представлен для упрощения работы с XSL-FO. В начале данной главы будет приведен обзор как XSLT, так и XSL-FO.

Краткая историческая справка

XSL был создан консорциумом World Wide Web Consortium (W3C, www.w3.org) — объединением групп, первоначально возглавлявшимся Тимом Бернерс-Ли (Tim Berners-Lee). W3C — это комитет, выпускающий спецификации, — такие, как спецификация для XSL, используемая в данной книге. Именно спецификации делают XML и XSL тем, чем они являются.

Вы можете прочитать об истории работы комитета W3C с языками стилей по адресу www.w3.org/Style/History. Интересно посмотреть, какая объемная работа была проделана и как много языков стилей сменилось за это время.

W3C первоначально, в 1980-х, разработал «дедушку» XML, SGML (Standard Generalized Markup Language, стандартный обобщенный язык разметки), однако он был слишком сложен для того, чтобы завоевать широкую популярность, и в действительности XML (как и HTML) представляет собой упрощенную версию SGML. W3C также создал для работы совместно с SGML язык стилей DSSSL (Document Style Semantics and Specification Language, язык семантики стиля и спецификации документа) — и так же, как XML был произведен от SGML, XSL основан на исходном DSSSL. Как утверждает W3C: «Модель, используемая XSL для отображения документов на экране, базируется на многих годах работы над сложным языком стилей по стандарту ISO, который называется Document Style Semantics and Specification Language (DSSSL)».

Однако исходная часть XSL, то есть XSL-FO, все равно оказалась не настолько простой, чтобы найти широкое распространение, поэтому XSLT был представлен как средство упрощения преобразования документов XML в форму XSL-FO. Как оказалось, именно XSLT был взят на вооружение, поскольку он представляет собой законченный язык преобразований, позволяющий работать с содержимым документов XML без написания программного кода, преобразовывать эти документы в другие документы XML, формат HTML или другие основанные на текстах форматы. Большой успех XSLT удивил даже W3C.

Преобразования XSLT-XSL

XSLT позволяет работать непосредственно с содержимым документов XML. Например, у вас может быть огромный документ XML, содержащий всю бейсбольную статистику за последний сезон, однако вас может интересовать только статистика для питчеров. Чтобы извлечь только эти данные, можно написать программу на Java, Visual Basic или С++, которая будет работать с разборщиками XML. Разборщики представляют собой специальные программные пакеты, читающие документы XML и передающие все данные документа последовательно в ваш код. Затем можно создать новый документ XML, pitchers.xml, содержащий только данные о питчерах.

Этот способ работает, однако при этом необходимо довольно много программировать и тратить много времени, в том числе и на тестирование. XSLT разрабатывался для решения подобных проблем. XSLT могут читать процессоры XSLT, обрабатывающие документы XML: все, что вам нужно сделать, — это создать таблицу стилей XSLT, определяющую правила, которые вам требуется применить для преобразования одного документа в другой. Никакого программирования не понадобится, что является несомненным достоинством в глазах многих людей, даже опытных программистов. В примере с бейсболом вам нужно написать таблицу стилей XSLT, определяющую необходимые действия, и предоставить процессору XSLT довершить все остальное.

Помимо преобразования одного документа XML в другой документ XML, можно также преобразовывать документы XML в документы разных типов — таких, как HTML, документы форматированного текста (RTF), документы, использующие XSL-FO и другие. Можно также преобразовать документы XML в иные основанные на XML языки — такие, как MathML, MusicML, VML, XHTML и другие — все это можно осуществить, не прибегая к программированию.

Во многих случаях язык XSLT может работать аналогично языку баз данных, такому как SQL (Structured Query Language, язык структурированных запросов, — известный язык доступа к базам данных), поскольку он позволяет извлекать требуемые данные из документов XML во многом похоже на то, как инструкция SQL извлекает данные из базы данных. Иногда даже говорят о XSLT как о SQL в Web, и если вы знакомы с SQL, это даст вам некоторое представление о безграничных возможностях XSLT. Например, при помощи таблицы стилей XSLT можно извлечь подмножество данных из документа XML, создать оглавление для большого документа, найти все элементы, удовлетворяющие определенному условию (например, поставщиков с определенным индексом) и т.д. И все это — за один шаг!

XSL-FO: форматирующие объекты XSL

Другая часть XSL — это XSL-FO, форматирующая часть языка XSL, с которой мы также познакомимся в этой книге. При помощи XSL-FO можно определить способ представления данных в документах XML, вплоть до размера полей, шрифтов, выравнивания, размера заголовка и подзаголовка, а также ширины страницы. При форматировании документа XML приходится думать о множестве вещей, и, соответственно, XSL-FO значительно объемистее, чем XSLT.

С другой стороны, из-за излишней сложности XSL-FO не очень популярен, и его нельзя сравнивать с XSLT в этом отношении. Существует не так много программ, поддерживающих XSL-FO, и ни одна из них не реализует достаточно полное приближение к стандарту. Так же как самый распространенный способ применения XSLT — это преобразование XML в HTML, самый распространенный способ применения XSL-FO — преобразование XML в текст в формате PDF (Portable Data Format, переносимый формат данных), используемый в Adobe Acrobat. Пример такого преобразования приведен в конце этой главы, а также в главе 11.

Спецификации W3C

W3C выпускает спецификации как для XML, так и для XSL, и именно с ними мы будем работать на протяжении всей книги. Спецификации W3C не называются стандартами, поскольку, по международным соглашениям, стандарты могут создаваться только уполномоченными государством комитетами. Вместо этого W3C начинает с выпуска требований (requirements) для новой спецификации. Требования представляют собой список целей и обзоров спецификации, но сама спецификация на этот момент еще не написана. Далее W3C выпускает спецификации: сначала в виде рабочих проектов (working drafts), которые могут комментировать все заинтересованные лица, затем в виде рекомендаций-кандидатов (candidate recommendations), которые еще могут быть изменены; и, наконец, в виде окончательных рекомендаций (recommendations), которые уже нельзя изменять.

В следующем списке приведены имеющие отношения к XSLT спецификации W3C, которые мы будем использовать в книге, и адреса, по которым их можно найти:

• полная рекомендация-кандидат XSL www.w3.org/TR/xsl/. Это большой документ, определяющий все аспекты XSL;

• рекомендация XSL Transformations 1.0 по адресу www.w3.org/TR/xslt. Предназначение XSLT состоит в преобразовании содержимого документов XML в другие документы, и именно поэтому XSL стал таким популярным;

• рабочий проект XSLT 1.1 по адресу www.w3.org/TR/xslt11. Это рабочий проект XSLT 1.1, который не будет далее разрабатываться до рекомендации — W3C планирует добавить всю функциональность XSLT 1.1 в XSLT 2.0;

• требования XSLT 2.0 по адресу www.w3.org/TR/xslt20req. W3C выпустил группу целей для XSLT 2.0, включая дополнительную поддержку схем XML;

• спецификация XPath 1.0 по адресу www.w3.org/TR/xpath. XPath используется для нахождения и указания на определенные разделы и элементы в документах XML так, чтобы можно было с ними работать;

• требования XPath 2.0 по адресу www.w3.org/TR/xpath20req. XPath в данный момент обновляется — добавляется дополнительная поддержка XSLT 2.0.

Версии XSLT

Спецификации XSLT разрабатывались значительно активнее, чем спецификации для всего XSL. Рекомендация XSLT 1.0 была окончательно принята 16 ноября 1999 г., и эта версия является сегодня основной версией XSLT.

Затем появился рабочий проект XSLT 1.1 и, хотя первоначально он рассматривался в качестве пролога новой рекомендации, ряд сотрудников W3C начал работать над XSLT 2.0 — и через некоторое время W3C решил прекратить работу над рекомендацией XSLT 1.1. Это означает, что рабочий проект XSLT 1.1 не будет развиваться далее — он навсегда останется в виде рабочего проекта и никогда не станет рекомендацией. Иными словами, не будет выпущено официальной версии 1.1 для XSLT.

Однако консорциум W3C также утверждает, что он планирует включить большую часть того, что было сделано в рабочем проекте XSLT 1.1, в XSLT 2.0, и поэтому в данной книге я кратко рассмотрю рабочий проект XSLT 1.1. Я обязательно отмечу материал как «только для рабочего проекта XSLT 1.1» при обсуждении нового материала, представленного в рабочем проекте XSLT 1.1.

Ниже перечислены изменения в XSLT 1.0, сделанные в рабочем проекте XSLT 1.1; заметьте, что этот список приведен здесь только в качестве справочного материала, так как большая часть материала вряд ли пока что-нибудь для вас значит:

• исключен поддерживаемый в XSLT 1.0 тип данных фрагмента результирующего дерева;

• метод вывода больше не может произвольно добавлять узлы пространства имен, поскольку процесс установки пространства имен применяется автоматически;

• была добавлена поддержка для XML Base;

• теперь поддерживаются несколько выходных документов при помощи элемента

• функции расширения теперь можно определять при помощи функции

• функции расширения теперь могут возвращать внешние объекты, не соответствующие никаким типам данных XPath.

В этой книге рассматривается рекомендация XSLT 1.0. а также рабочий проект XSLT 1.1. В развитие данной темы W3C и выпустил требования для XSLT 2.0, которые также рассматриваются в книге под именем XSLT 2.0. В следующем списке приведен обзор целей XSLT 2.0:

• добавить дополнительную поддержку для работы с содержимым схемы XML при помощи XSLT;

• упростить работу со строками;

• упростить работу с XSLT;

• улучшить поддержку различных языков;

• сохранить обратную совместимость с XSLT 1.0;

• поддерживать повышенную эффективность процессора.

Хотя XSLT 2.0 еще некоторое время не будет выпущен в окончательном варианте, я рассмотрю все, что о нем известно, при обсуждении имеющих к нему отношение тем. Например, разработанный W3C последователь HTML — это основанный на XML язык XHTML. В XSLT 1.0 и в рабочем проекте XSLT 1.1 нет прямой поддержки преобразований из XML в XHTML, поэтому нам придется создать это преобразование с нуля. Однако такая поддержка входит в состав XSLT 2.0, и я отмечу этот факт при обсуждении XHTML.

Таким образом, мы рассмотрели краткий обзор тематики; давайте перейдем к работе. XSL предназначен для работы с документами XML, поэтому сначала я хочу рассмотреть структуру документов XML. Вы будете работать с документами XML, но сами таблицы стилей XSL также являются документами XML, что следует помнить при их написании. В этой книге считается, что вы обладаете знаниями и XML, и HTML.

Документы XML

Вы должны понимать, как работают документы XML, поэтому проверьте по материалам этого раздела, готовы ли вы к работе. Давайте посмотрим на примере документа XML:

Кодировки в XSLT-преобразованиях

Кодировки в XSLT-преобразованиях

Несмотря на то, что в логических деревьях, которыми манипулирует XSLT, текстовые узлы представляются в кодировке Unicode, очень часто в обрабатываемых документах бывает необходимо использовать также другие кодировки. К примеру, большинство русскоязычных документов хранятся в кодировках Windows-1251 и KOI8-R.

Если внимательно присмотреться к преобразованиям, можно заметить, что, как правило, в них участвуют минимум три документа — входящий (преобразовываемый) документ, документ преобразования (преобразующий) и выходящий (преобразованный документ). Соответственно, каждый из них может иметь собственную кодировку.

Кодировка входящего документа указывается в его xml-декларации. Например, документы в кодировке Windows-1251 должны иметь xml-декларацию вида

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

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

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL