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

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

Шрифт:
Преобразовываемый тип
Целевой тип
boolean
(булевое значение)
number
(число)
string
(строка)
node-set
(множество узлов)
tree
(дерево)
boolean
(булевое значение)
0 
→
 false NaN 
→ 
false
другое → 
true
пустая → 
false
непустая → 
true
пустое → 
false
другое → 
true
всегда
true
number
(число)
false
→
0 true
→
1
разбирается, как число в десятичном формате мн-во → строка → число дерево → строка → число
string
(строка)
false 
→ 
"false" true 
→ 
"true"
десятичная запись числа строковое значение первого узла в порядке просмотра строковое сложение всех текстовых узлов дерева
node-set
(множество узлов)
нет нет нет нет
tree
(дерево)
нет нет нет нет

Переменные

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

<xsl:variable name="url" select="'http://www.xsltdev.ru'"/>

создаст переменную с именем

url
и присвоит ей строковое значение
"http://www.xsltdev.ru"
. После этого переменную можно использовать в выражениях, например:

<xsl:value-of select="concat('Welcome to ', $url)"/>

Для того чтобы отличать переменные от путей выборки, в выражениях их именам предшествует префикс "

$
": к значению переменной с именем
url
мы обращались как к
$url
.

Каждая из переменных имеет собственную область видимости (англ. visibility scope) — область документа преобразования, в которой может быть использовано ее значение. В зависимости от этого переменные могут быть глобальными (видимыми во всем преобразовании) и локальными (видимыми только в своем родительском элементе).

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

xsl:apply-templates
или
xsl:call-template
, или самим процессором, если речь идет о глобальных параметрах.

Использование переменных и параметров в XSLT отличается от их использования в привычных процедурных языках программирования типа С++, Java или Object Pascal из-за того, что их значения не могут изменяться. После того, как переменной или параметру присвоено некоторое изначальное значение, оно будет оставаться неизменным.

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

Выражения

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

Замечание

Несмотря на то, что XPath является самостоятельным языком, его роль в XSLT настолько велика, что здесь и далее мы будем рассматривать их как единое целое.

Можно выделить четыре основные задачи, для которых в преобразованиях используются выражения:

□ выбор узлов для обработки;

□ описание условий;

□ вычисление строковых значений, которые затем будут использованы в выходящем дереве;

□ вычисление множеств узлов, которые затем будут использованы в выходящем дереве.

Первая из задач непосредственно относится к самому процессу преобразования. Выражения, содержащиеся в атрибутах

select
элементов
xsl:apply-templates
и
xsl:for-each
, вычисляют множества, к узлам которых нужно применить шаблоны.

Пример
Листинг 3.16

<xsl:template match="HTML">

 <html>

<xsl:apply-templates select="HEAD"/>

<xsl:apply-templates select="BODY"/>

 </html>

</xsl:template>

В этом шаблонном правиле содержатся два элемента

xsl:apply-templates
, которые применяют шаблоны к множествам, выбранным выражениями
HEAD
и
BODY
соответственно.

  • Читать дальше
  • 1
  • ...
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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