Кодирование URL версии 1 XSLT

В версии 1 XSLT существует ли функция кодирования URL? Мне нужно что-то подобное функции encodeURIComponent в JavaScript?

Наблюдение, поскольку это не возможно, поскольку я использую платформу.NET в качестве XSLT, применяется к странице Sharepoint. Есть ли способ кодировать эту покупку, называя JavaScript, кодируют функцию в XML, отрывке ниже:

<xsl:template name="BuildLink">
    <xsl:param name="PrimarySubject" />
    <xsl:text>?PrimarySubject=</xsl:text>
    <xsl:value-of select="$PrimarySubject" />
</xsl:template>

Спасибо,

14
задан van 11 March 2010 в 14:26
поделиться

4 ответа

, вы можете использовать JScript, встроенный в XSLT .. .

<msxsl:script language="JScript" implements-prefix="custom">
function uriencode(string) {
 return encodeURIComponent(string);
}
</msxsl:script>

и назовите его как custom: uriencode (url_to_encode)

Сначала вам нужно будет определить пространство имен, добавив к тегу тег {{ 1}} xmlns: msxsl = "urn: schemas-microsoft-com: xslt" xmlns: custom = "http: //youdomain.ext/custom"

{{1 }}

[обновление]

URL-адрес, который я помещаю для пользовательского пространства имен, может быть любым .. это просто уникальный идентификатор ..
{{1 }} ( ссылка заключает, что это менее запутанно, если вы не используете URL-адрес в качестве идентификатора ..)

[udpdate 2]

Добавлена ​​некоторая информация.
Если вы используете MSXML6, вам необходимо вручную разрешить создание сценариев в XSLT с помощью свойства AllowXsltScript .. ( ссылка )
{{ 1}} В зависимости от того, как вы загружаете xslt и его настройки, посмотрите примеры в Блоки сценариев с использованием msxsl: script о том, как разрешить сценарии

13
ответ дан 1 December 2019 в 12:38
поделиться

Такого нет. XSLT не имеет знаний об URL и HTML.

В зависимости от используемого языка и платформы вы можете использовать расширение XSLT, которое делает это.

1
ответ дан 1 December 2019 в 12:38
поделиться

Вы можете , при определенных обстоятельствах используйте EXSLT (расширения, предоставляемые анализатором): FAQ по XSLT Дэйва Поусона для этого.

Однако XSLT завершен по Тьюрингу, поэтому теоретически можно написать базовый кодировщик URL в самом XSLT (я бы не стал пробовать).

1
ответ дан 1 December 2019 в 12:38
поделиться

Эти таблицы стилей XSLT 1.0 могут использоваться для кодирования / декодирования URL:

  1. url-decode.xsl
  2. url-encode.xsl

Описание: только очень небольшое подмножество символов ASCII можно безопасно встроен в URI. Персонажи снаружи этот набор должен быть экранирован с помощью так называемая "кодировка URL" или «% -эскейпинг». Персонажи преобразовано в байты согласно некоторым кодировка (ASCII, если возможно) и те каждый байт записывается как '%' за которым следуют 2 шестнадцатеричные цифры. В кодировка, использованная в качестве основы для этого преобразование может быть любым, но имеет тенденцию быть продиктованным контекстом, в котором URI используется. Недавние и будущие стандарты используют UTF-8, но устаревшие приложения, в том числе многие широко распространенный, на стороне сервера обработчики данных HTML-формы предполагают ISO-8859-1.

Например, приветствие "¡Hola, César! "Можно встроить в URI, если он записывается следующим образом: % A1Hola% 2C% 20C% E9sar !. (... предполагая ISO-8859-1 как основа для кодирования. Если бы он был основан на UTF-8, он бы быть% C2% A1Hola% 2C% 20C% C3% A9sar!).

Демонстрационная версия url-encode.xsl кодирует URL-адрес произвольная строка, переданная как параметр с именем iso-string. Предполагает ISO-8859-1 станет основой для Кодировка URL. Он должен быть совместимым с любым процессором XSLT 1.0.

Расшифровка ISO-8859-1 на основе Строка в кодировке URL использует аналогичный техника. См. Url-decode.xsl для демо. Его параметр url - это строка быть декодированным.

7
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: