Если аргумент функции опущен, она выполняется со строковым значением контекстного узла.
Примеры
normalize-space(' А - В - С ')
→
'А-В-С'
normalize-space('А &#х9; В &#х9; С') > 'A B C'
Функция translate
string translate(string, string, string)
Функция
translate
производит замену символов первого своего строкового аргумента, которые присутствуют во втором аргументе на соответствующие символы третьего аргумента.
Пример
translate('abcdefgh', 'aceg', 'ACEG')
→
'AbCdEfGh'
Если некоторый символ повторяется во втором аргументе несколько раз, учитывается только первое его появление.
Пример
translate('abcdefgh', 'acaeaga', 'ACBECGD')
→
'AbCdEfGh'
Если второй аргумент длиннее третьего, символы, для которых нет соответствующей замены, удаляются из строки.
Если третий аргумент длиннее второго, остаток строки игнорируется.
Пример
translate('abcdefgh', 'aceg', 'ACEGBDFH')
→
' AbCdEfGh'
Функцию
translate
можно использовать, например, для изменения регистра символов. Конечно, это будет работать только для тех языков, для которых такая функция будет записана, но и этого в большинстве случаев будет достаточно. В будущем предполагается включить в новые версии языка более мощные функции для работы с регистрами символов.
Пример
Для того чтобы изменять регистр слов русского языка, мы можем определить две переменные,
lowercase
и
uppercase
, которые будут содержать строчные и прописные символы основного русского алфавита (мы включили в него букву ё — строчную ("
ё
") и прописную ("
Ё
"), хотя в соответствии с Unicode она относится к расширениям). Мы также создадим два именованных шаблона, которые будут менять регистр символов строкового параметра
str
. Для удобства использования мы вынесем определения переменных и шаблонов во внешний модуль