translate()¶
Функция translate
производит замену символов первого своего строкового аргумента, которые присутствуют во втором аргументе на соответствующие символы третьего аргумента.
Синтаксис¶
1 |
|
Описание и примеры¶
Пример 1¶
1 |
|
Если некоторый символ повторяется во втором аргументе несколько раз, учитывается только первое его появление.
Пример 2¶
1 |
|
Если второй аргумент длиннее третьего, символы, для которых нет соответствующей замены, удаляются из строки.
Пример 3¶
1 |
|
Если третий аргумент длиннее второго, остаток строки игнорируется.
Пример 4¶
1 |
|
Функцию translate
можно использовать, например, для изменения регистра символов. Конечно, это будет работать только для тех языков, для которых такая функция будет записана, но и этого в большинстве случаев будет достаточно. В будущем предполагается включить в новые версии языка более мощные функции для работы с регистрами символов.
Пример 5¶
Для того чтобы изменять регистр слов русского языка, мы можем определить две переменные, lowercase
и uppercase
, которые будут содержать строчные и прописные символы основного русского алфавита (мы включили в него букву ё — строчную ("ё") и прописную ("Ё"), хотя в соответствии с Unicode она относится к расширениям). Мы также создадим два именованных шаблона, которые будут менять регистр символов строкового параметра str
. Для удобства использования мы вынесем определения переменных и шаблонов во внешний модуль ru.xsl
.
Листинг 6.6. Преобразование ru.xsl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Использовать этот модуль можно, включив или импортировав его в основное преобразование элементами xsl:include
или xsl:import
. После этого в основном преобразовании будут доступны переменные lowercase
и uppercase
, которые можно будет использовать в функции translate
и шаблоны с именами lower
и upper
.
Использовать функцию translate
с переменными lowercase
и uppercase
можно следующим образом:
1 2 |
|
Именованные шаблоны можно вызывать элементом xsl:call-template
, передавая параметр при помощи xsl:with-param
. Например, следующий фрагмент шаблона
1 2 3 |
|
создаст в выходящем дереве текстовый узел со значением "дом".
Ссылки¶
- translate() MDN (рус.)