Kniga-Online.club

Алексей Валиков - Технология XSLT

Читать бесплатно Алексей Валиков - Технология XSLT. Жанр: Программирование издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

 <sum>1</sum>

 <sum>4</sum>

 <sum>9</sum>

 <sum>16</sum>

 <sum>25</sum>

</list>

В этом преобразовании мы заменяем каждый элемент item на сумму значений предшествующих ему элементов плюс собственное значение. Предшествующие элементы выбираются путем выборки preceding-sibling::item, текущий элемент — сокращенным путем ".", затем эти два множества объединяются при помощи оператора |, и, наконец, мы вычисляем сумму значений узлов, входящих в них функцией sum.

Строковые значения суммируемых узлов преобразовываются в числовой формат так же, как они преобразовывались бы функцией number. Например, если входящий документ будет иметь вид

<list>

 <item>1</item>

 <item>3</item>

 <item>five</item>

 <item>7</item>

 <item>9</item>

</list>

то на выходе мы получим

<list>

 <sum>1</sum>

 <sum>4</sum>

 <sum>NaN</sum>

 <sum>NaN</sum>

 <sum>NaN</sum>

</list>

потому что, начиная с третьего элемента, в суммировании будет участвовать значение number('five'), то есть не-число (NaN).

Функции floor и ceiling

number floor(number)

number ceiling(number)

Функции floor и ceiling (англ. пол и потолок соответственно) осуществляют округление численного аргумента до ближайшего не большего и ближайшего не меньшего целого соответственно.

Примеры

floor(2.3) → 2

ceiling(2.3) → 3

floor(-2.3) → -3

ceiling(-2.3) → -2

floor(-1 div 0) → -Infinity

ceiling(-1 div 0) → -Infinity

floor('zero') → NaN

ceiling(-1 div (-1 div 0)) → 0

Функция round

number round(number)

Функция round округляет число до ближайшего целого значения. У этой функции есть несколько нюансов, которые мы сейчас разберем.

□ Если дробная часть числа равна 0.5, то функция вернет ближайшее большее целое.

□ Если аргумент является не-числом (NaN), то результат также будет NaN.

□ Если аргумент является положительной или отрицательной бесконечностью, то результатом будет тоже положительная или отрицательная бесконечность, то есть аргумент не изменится.

□ Если аргумент является положительным или отрицательным нулем, результатом будет также положительный или отрицательный нуль, то есть аргумент не изменится.

□ Если аргумент меньше нуля, но больше или равен — 0.5, результатом будет отрицательный нуль.

Примеры

round(2.5) → 3

round(2.49) → 2

round(-1.7) → -2

1 div round(0.5) → Infinity

1 div round(-0.5) → -Infinity

round(1 div 0) → Infinity

round('one') → NaN

Строковые функции

Функция string

string string(object?)

Подобно функциям boolean и number, функция string преобразует свой аргумент к строковому типу явным образом. Если аргумент опущен, функции передается множество узлов, состоящее из единственного контекстного узла.

Напомним вкратце правила приведения других типов к строке.

□ Булевые значения преобразуются в строку следующим образом:

 • "истина" (true) преобразуется в строку "true";

 • "ложь" (false) преобразуется в строку "false".

□ Числа преобразуются к строковому виду следующим образом:

 • не-число (NaN) преобразуется в строку "NaN";

 • положительный нуль преобразуется в строку "0";

 • отрицательный нуль преобразуется в строку "0";

 • положительная бесконечность преобразуется в строку "Infinity";

 • отрицательная бесконечность преобразуется в строку "-Infinity";

 • положительные целые преобразуются в свое десятичное представление без ведущих нулей и без точки ("."), отделяющей дробную часть от целой;

 • отрицательные целые преобразуются так же, как и положительные, но с начальным знаком "минус" ("-");

 • остальные числа преобразуются в десятичное представление с использованием точки ("."), отделяющей целую часть от дробной части; целая часть не содержит ведущих нулей (кроме случая с числами в интервале (-1;1)), дробная часть содержит столько цифр, сколько требуется для точного представления числа.

□ Множество узлов преобразуется в строковое значение своего первого в порядке просмотра документа узла. Если множество пусто, функция возвращает пустую строку.

□ Объекты других типов преобразуются в строку в соответствии с собственными правилами. Например, результирующий фрагмент дерева преобразуется в конкатенацию всех своих строковых узлов.

Примеры

string(boolean(0)) → false

string(number('zero')) → NaN

string(number('.50000')) →0.5

string(number(00500.)) → 500

Для строкового форматирования чисел рекомендуется использовать функцию XSLT format-number совместно с элементом xsl:decimal-format.

Функция concat

string concat(string, string, string*)

Функция concat принимает на вход две или более строки и возвращает конкатенацию (строковое сложение) своих аргументов.

Пример:

concat('not','with','standing',' problem') → 'notwithstanding problem'

Функция starts-with

boolean starts-with(string, string)

Функция starts-with принимает на вход два строковых аргумента и возвращает true, если первая строка начинается второй и false в противном случае.

starts-with('http://www.xsltdev.ru', 'http') → true

starts-with('Title', 'ti') → false

Функция contains

boolean contains(string, string)

Функция contains принимает на вход два строковых аргумента и возвращает true, если первая строка содержит вторую и false в противном случае.

contains('[email protected]', '(@') → true

Функция substring-before

string substring-before(string, string)

Функция substring-before принимает на вход два строковых аргумента. Эта функция находит в первой строке вторую и возвращает подстроку, которая ей предшествует. Если вторая строка не содержится в первой, функция вернет пустую строку.

Примеры

substring-before('12-May-1998', '-') → '12'

substring-before('12 May 1998', ' ') → '12'

substring-before('12 May 1998', '&#32;') → '12'

substring-before('12 May 1998', '-') → ''

Функция substring-after

string substring-after(string, string)

Эта функция аналогична функции substring-before, только она возвращает строку, которая следует за вторым аргументом. Если вторая строка не содержится в первой, эта функция также вернет пустую строку.

Примеры

substring-after('12-May-1998', '-') → 'May-1998'

substring-after('12 May 1998', ' ') → 'May 1998'

substring-after('12 May 1998', '&#32;') → 'May 1998'

substring-after('12 May 1998', '-') → ''

Функция substring

string substring(string, number, number?)

Функция substring возвращает подстроку переданного ей строкового аргумента, которая начинается с позиции, указанной вторым аргументом и длиной, указанной третьим аргументом. Если третий аргумент опущен, подстрока продолжается до конца строки. Если численные аргументы являются нецелыми, они округляются при помощи функции round.

В XPath позицией первого символа является 1, а не 0, как в некоторых других языках программирования.

При вычислении подстроки учитываются следующие условия.

□ Если первый численный аргумент меньше 1 (это относится и к отрицательной бесконечности), то подстрока начинается с начала строки.

□ Если первый численный аргумент больше длины строки (это относится и к положительной бесконечности), то подстрока будет пустой.

Перейти на страницу:

Алексей Валиков читать все книги автора по порядку

Алексей Валиков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Технология XSLT отзывы

Отзывы читателей о книге Технология XSLT, автор: Алексей Валиков. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*