我有一个自定义内容类型,其自定义字段类型为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;bookmark=224;GwAAAACJBDEwMDE=**&amp;**mode=Create"> Open</a>
有人可以帮助我吗?
答案 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&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>
答案 1 :(得分:2)
规范声明在编写属性节点时会忽略disable-output-escaping。正如迪米特所说,你不需要它。
答案 2 :(得分:2)
解决了! 这工作
<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>
因为禁用 - 输出 - 转义不适用于属性,我认为