XSL - Как отключить экранирование выходных данных для атрибута? - PullRequest
9 голосов
/ 27 мая 2010

У меня был следующий тег <a>:

<a href="http://myserver/_forms?url={@FileRef}&amp;id=5">...</a>

Один из файлов называется "File's got apostrophe.xml". Выход XSL:

<a href="http://myserver/_forms?url=/blah/File&amp;#39;s got apostrophe.xml&id=5">...</a>

Проблема в том, что апостроф экранируется (дважды?) В HTML &amp;#39;, что разрывает ссылку.

Я также пытался использовать <xsl:attribute>, с такими же результатами:

<a>
  <xsl:attribute name="href">
    <xsl:value-of select="concat('http://myserver/_forms?url=', @FileRef, '&amp;id=5')"
         disable-output-escaping="yes" />
  </xsl:attribute>
</a>

Вывод <xsl:value-of select="@FileRef" disable-output-escaping="yes" /> работает хорошо - неэкранированное значение печатается на странице.

Как установить атрибут без экранирования строки?

Ответы [ 2 ]

17 голосов
/ 27 мая 2010

Вы можете сгенерировать в виде текста:

<xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
<xsl:value-of select="concat('http://myserver/_forms?url=', @FileRef, '&amp;id=5')" disable-output-escaping="yes" />
<xsl:text disable-output-escaping="yes">" &gt;/a&lt;</xsl:text>
5 голосов
/ 27 мая 2011

Я знаю, что немного опоздала с этим, но я думаю, что тег атрибута - это путь, вы просто не хотите конкататить ...

<a>
  <xsl:attribute name="href">
    http://myserver/_forms?url=<xsl:value-of select="@FileRef" disable-output-escaping="yes" />&amp;id=5
  </xsl:attribute>
</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...