Выбрать главу

 • не-число (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 совместно с элементом xsclass="underline" 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('address@host.com', '(@') 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', ' ') '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', ' ') 'May 1998'

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

Функция substring

string substring(string, number, number?)

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

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

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

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

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

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

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

Примеры

substring('123456', 2, 3) '234'

substring('123456', 2, 5) '23456'

substring('123456', 2, 6) '23456'

substring('123456', 2) '23456'

substring('123456', -4) '123456'

substring('123456', 5, 5) '5'

substring('123456', 5) '56'

substring ('123456', 6) '6'

substring('123456', 1 div 0, ) ''

substring('123456', 2, -1) ''

Функция string-length

number string-length(string?)

Функция string-length возвращает число символов строкового аргумента. Если аргумент опущен, string-length возвращает длину строкового представления контекстного узла.

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