禁用输出转义="yes-no"不起作用,在Sharepoint URL中输出两次



我有一个自定义内容类型,其中有一个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

但是使用双amp;所以不起作用。

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

有人能帮我吗?

这里有一个简单的方法,不需要使用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>

规范规定,在写入属性节点时会忽略禁用输出转义。正如Dimitre所说,你不需要它。

已解决!这适用于

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

因为禁用输出转义对属性无效,我认为

最新更新