Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

Вторая и третья условные части преобразования являются прерогативой самого XSLT. XSLT — это XML-язык в полном смысле этого слова: программы на XSLT (мы будем называть их преобразованиями сообразно их предназначению) являются хорошо оформленными (well-formed) XML-документами. XSLT также использует пространства имен; практически все имена, встречающиеся в XSLT, как-то: имена переменных, шаблонов, форматов и так далее — рассматриваются как расширенные имена, характеризуемые локальной частью вкупе с URI — уникальным идентификатором пространства имен.

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

В качестве первого примера XSLT-преобразования, который будет приведен в этой книге, мы рассмотрим классическую программу

"Hello, world!"
. Листинг 2.1 показывает XSLT-интерпретацию
"Hello, world!"
, когда мы преобразуем документ

<msg>Hello, world!</msg>

в документ вида:

<message>Hello, world!</message>

Листинг 2.1. Преобразование "Hello, world!"

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="msg">

<message>

<xsl:value-of select="."/>

</message>

 </xsl:template>

</xsl:stylesheet>

Исходный код, представленный выше, является хорошо оформленным XML-документом. Корневым его элементом является элемент

xsl:stylesheet
, который и обозначает преобразование. Атрибут
version
указывает на версию языка XSLT, в соответствии с которой был построен этот документ; помимо этого в элементе
xsl:stylesheet
объявляется пространство имен с префиксом
xsl
, которому соответствует URI
"http://www.w3.org/1999/XSL/Transform"
. Все элементы преобразования, принадлежащие пространству имен с этим URI, будут восприняты процессором, как принадлежащие языку XSLT.

Элемент

xsl:stylesheet
имеет один-единственный дочерний элемент
xsl:template
, который и задает правило преобразования. Атрибут
match
указывает, что это правило должно обрабатывать элемент
msg
. Содержимое
xsl:template
является телом шаблона. Оно выполняется тогда, когда сам шаблон применяется к некоторой части документа. В данном случае тело шаблона будет выполнено, когда само правило будет применяться к элементу
msg
.

Телом шаблона является элемент

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

Содержимым элемента

message
является элемент
xsl:value-of
, который, в отличие от
message
принадлежит XSLT. Элемент
xsl:value-of
вычисляет XPath-выражение, заданное в его атрибуте
select
, и возвращает результат этого вычисления. XPath-выражение,
"."
, указанное в
select
, возвращает ту самую часть узла, которая обрабатывается в данный момент, иначе говоря — элемент
msg
.

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

msg
, создать в выходящем документе элемент
message
и включить в него содержимое элемента
msg
.

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

Совсем иным является язык XPath, который представлен в нашем примере лаконичным выражением

"."
. XPath не придерживается XML-синтаксиса, напротив, он скорее похож на синтаксис путей в операционных системах — в главе 4 мы покажем, насколько верно это сравнение.

В приведенном преобразовании участвовала и третья синтаксическая конструкция, которая называется в XSLT паттерном (от англ. pattern — образец). Паттерн

msg
, заданный в атрибуте
match
элемента
xsl:template
указывает, какая именно часть XML-документа должна быть обработана этим правилом. Синтаксически паттерны являются XPath-выражениями (но не наоборот), однако смысл их различается. XPath-выражения вычисляются и возвращают результат, паттерны же просто устанавливают соответствие некоторому образцу. В нашем преобразовании паттерн
msg
указывает, что шаблон должен обрабатывать только элементы
msg
и никакие другие.

  • Читать дальше
  • 1
  • ...
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: