Disable-output-escaping =“yes-no”not working&在Sharepoint URL中输出两次

时间:2012-01-20 16:20:37

标签: xslt sharepoint-2010 escaping

我有一个自定义内容类型,其自定义字段类型为TEXT。 此字段包含以协议DynamicsNav开头的URL:因此sharepoint不允许将此字段作为标准“安全”超链接字段进行管理。 该字段通过XSL模板呈现,并由固定文本表示。

<xsl:template match="FieldRef[@Name='DSErpHyperlink']" mode="Text_body">
<xsl:param name="thisNode" select="."/>
<a>
    <xsl:attribute name="href">
        <xsl:value-of select="$thisNode/@DSErpHyperlink" disable-output-escaping="yes" /> 
    </xsl:attribute>
    Open
</a>

字段DSErpHyperlink包含

dynamicsnav://servername:7041/ServiceName/CRONUS Italia S.p.A./runpage?page=30&bookmark=224;GwAAAACJBDEwMDE=&mode=Create

但用双放大器渲染;所以不起作用。

<a href="dynamicsnav://servername:7041/ServiceName/CRONUS Italia S.p.A./runpage?page=30&amp;amp;bookmark=224;GwAAAACJBDEwMDE=**&amp;amp;**mode=Create"> Open</a>

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

这是一种简单的方法,不需要使用DOE

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="x">
  <xsl:variable name="thisNode" select="."/>
     <a href="{$thisNode/@DSErpHyperlink}">SomeLinkText</a>
 </xsl:template>
</xsl:stylesheet>

将此转换应用于以下XML文档

<t>
 <x DSErpHyperlink=
  "dynamicsnav://servername:7041/ServiceName/CRONUS Italia S.p.A./runpage?page=30&amp;bookmark=224;GwAAAACJBDEwMDE=&amp;mode=Create "
/>
</t>

产生了想要的正确结果

<a href="dynamicsnav://servername:7041/ServiceName/CRONUS Italia S.p.A./runpage?page=30&amp;bookmark=224;GwAAAACJBDEwMDE=&amp;mode=Create ">SomeLinkText</a>

答案 1 :(得分:2)

规范声明在编写属性节点时会忽略disable-output-escaping。正如迪米特所说,你不需要它。

答案 2 :(得分:2)

解决了! 这工作

    <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
    <xsl:value-of select="$thisNode/@DSErpHyperlink" disable-output-escaping="yes" />
    <xsl:text disable-output-escaping="yes">" &gt;Open&lt;/a&gt;</xsl:text>

而不是这不起作用

    <a>
        <xsl:attribute name="href">
            <xsl:value-of select="$thisNode/@DSErpHyperlink" disable-output-escaping="yes" /> 
        </xsl:attribute>
        Open
    </a>

因为禁用 - 输出 - 转义不适用于属性,我认为