• не-число (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 возвращает длину строкового представления контекстного узла.
Напомним, что длина строки не имеет ничего общего с количеством байт, которое требуется для ее представления. Разные формы кодирования используют разное количество байт для записи символов, внутренние представления строк также могут быть различными, но длина строки в любом случае — это число символов, которые ее составляют.