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 (рус.)