我有一个自定义内容类型,其中有一个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;bookmark=224;GwAAAACJBDEwMDE=**&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&bookmark=224;GwAAAACJBDEwMDE=&mode=Create "
/>
</t>
生成所需的正确结果:
<a href="dynamicsnav://servername:7041/ServiceName/CRONUS Italia S.p.A./runpage?page=30&bookmark=224;GwAAAACJBDEwMDE=&mode=Create ">SomeLinkText</a>
规范规定,在写入属性节点时会忽略禁用输出转义。正如Dimitre所说,你不需要它。
已解决!这适用于
<xsl:text disable-output-escaping="yes"><a href="</xsl:text> <xsl:value-of select="$thisNode/@DSErpHyperlink" disable-output-escaping="yes" /> <xsl:text disable-output-escaping="yes">" >Open</a></xsl:text>
相反,不起作用
<a>
<xsl:attribute name="href">
<xsl:value-of select="$thisNode/@DSErpHyperlink" disable-output-escaping="yes" />
</xsl:attribute>
Open
</a>
因为禁用输出转义对属性无效,我认为