XSL - 如何禁用属性的输出转义?

时间:2010-05-27 12:38:19

标签: xml sharepoint xslt sharepoint-designer

我有以下<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>

问题是撇号是否被转义(两次?)到&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 个答案:

答案 0 :(得分:17)

您可以生成&lt; a&gt;作为文字:

<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>

答案 1 :(得分:5)

我知道我有点迟到了,但我认为属性标签就是这样,你只是不想连续......

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