Кодирование URL с помощью XSLT 1.0

У меня проблема с написанием моего XSL. У меня есть ссылка со следующим кодом:

<a>
<xsl:attribute name="href">
  <xsl:value-of select="concat($myUrl,'&amp;projectNumber=',$projectNumber)"/>
</xsl:attribute>
<xsl:attribute name="title">
  <xsl:value-of select="title"/>
</xsl:attribute>
LINK
</a>

Поэтому мне нужно передать переменную projectNumber в конец myUrl. Это прекрасно работает, и я получаю ...myUrl...&projectNumber=...projectNumber... в HTML.

Проблема в том, что переменная projectNumber иногда содержит некоторые символы, которые нужно экранировать в href моей ссылки. Я пытался использовать функцию XSL str:escape-uri() разными способами, но безуспешно...

Например, если myUrl равен www.example.com/example.aspx?a=b, а номер проекта равен aaaūaaa, я получаю href как www.example.com/example.aspx?a=b&projectNumber=aaaūaaa, но мне нужно получить www.example.com/example.aspx?a=b&projectNumber=aaa%C5%ABaaa. (%C5%AB - это способ экранирования 'ū') Есть предложения? Спасибо.


person Gintas K    schedule 10.07.2013    source источник


Ответы (1)


Если вы используете XSLT 1.0, см. это.

В случае XSLT 2.0 вы можете использовать это для решения проблемы.

<xsl:value-of select="concat($myUrl,'&amp;projectNumber=',encode-for-uri($projectNumber))"/>
person Nidhin Joseph    schedule 10.07.2013
comment
попробовал тот же код с «encode-uri» вместо «encode-for-uri», но он по-прежнему не работает в обоих направлениях:/ - person Gintas K; 10.07.2013
comment
Нет, я не пробовал, не могли бы вы показать мне пример, как я могу передать номер проекта во встроенный JScript и вернуть экранированный номер проекта? - person Gintas K; 10.07.2013