禁用输出转义=“是-否”不工作&; Sharepoint URL 中输出两次

发布于 2024-12-28 11:33:24 字数 938 浏览 1 评论 0 原文

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

有人可以帮助我吗?

I have a custom content type with a custom field of type TEXT.
This field contain a URL that starts with protocol DynamicsNav: so sharepoint does not permit to manage this field as a standard "safe" hyperlink field.
This field is rendered through a XSL Template and is represented by a fixed text.

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

Field DSErpHyperlink Contains

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

But is rendered with double amp; so doesn't works.

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

Someone can help me ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

π浅易 2025-01-04 11:33:24

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

Here is a simple way to do this, that doesn't require using 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>

when this transformation is applied on the following XML document:

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

the wanted, correct result is produced :

<a href="dynamicsnav://servername:7041/ServiceName/CRONUS Italia S.p.A./runpage?page=30&bookmark=224;GwAAAACJBDEwMDE=&mode=Create ">SomeLinkText</a>
拧巴小姐 2025-01-04 11:33:24

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

The specification states that disable-output-escaping is ignored when writing an attribute node. As Dimitre says, you don't need it.

送你一个梦 2025-01-04 11:33:24

解决了!
这有效

 />
    " >打开</a>


相反,这不起作用

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

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

SOLVED !
This works

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

Instead of this that doesn't work

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

Because disable-output-escaping is not working for attributes I think

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文