вы можете использовать JScript, встроенный в XSLT ...
<msxsl:script language="JScript" implements-prefix="custom">
function uriencode(string) {
return encodeURIComponent(string);
}
</msxsl:script>
и называть его как custom:uriencode( url_to_encode )
Сначала вам нужно будет определить пространство имен, добавив к <xsl:stylesheet ...
пометьте xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:custom="http://youdomain.ext/custom"
[обновление]
URL-адрес, который я указал для пользовательского пространства имен, может быть любым ... itэто просто уникальный идентификатор ..
( по ссылке делается вывод, что это менее запутанно, если вы не используете URL в качестве идентификатора .. )
[udpdate 2]
Некоторая дополнительная информация.
Если вы используете MSXML6, вам нужно вручную разрешить сценарии в XSLT, используя свойство AllowXsltScript
.( ссылка )
В зависимости от того, как вы загружаете xslt и его настройки, посмотрите на примеры в Блоки скриптов с помощью msxsl: script о том, как разрешать скрипты