为联合结果 Web 部件启用 HTML 呈现

备注

本主题介绍 Infrastructure Update for Microsoft Office Servers包含的功能。若要下载此更新,请参阅 2008 年 7 月 15 日版 SharePoint Server 2007 基础结构更新说明

默认情况下,出于安全原因,联合结果 Web 部件的 XSLT 会从显示中删除 HTML。但是,您可能希望显示在受信任位置源的联合结果 Web 部件中包含 HTML 的字段。可以通过对联合位置或联合结果 Web 部件的 XSL 属性进行以下更改来实现此目的:

  • 确保未从显示中删除 HTML。

  • 禁用输出缓存。

  • 禁用截断(可选)。

本主题介绍了这些更改。

备注

如果更新联合位置的 XSL 属性,您必须确保联合结果 Web 部件配置为使用该位置的显示信息。

将联合结果 Web 部件配置为使用该位置的显示信息

  1. 在浏览器中,导航到结果页 URL。例如,http:// ServerName/results.aspx。

  2. 单击“网站操作”链接,然后单击“编辑网页”。

  3. 在要修改的联合结果 Web 部件实例中,单击“编辑”箭头以显示“Web 部件”菜单,再单击“修改共享 Web 部件”。

  4. 在联合结果 Web 部件工具窗格中,单击“显示属性”箭头。

  5. 选择“使用位置可视化”。

  6. 单击“确定”以更新联合结果 Web 部件实例。

备注

默认结果页上的联合搜索 Web 部件配置为使用 Internet 搜索结果和 Internet 搜索建议位置。对于这些位置的默认配置,下面的 XSLT 代码无法按预期方式运行。

步骤 1:确保未从显示中删除 HTML

您必须了解返回到联合结果 Web 部件的 XML 和转换此 XML 的 XSLT 的结构,才能启用 HTML 呈现。若要查看联合位置返回的 XML 并了解如何编辑联合位置或 Web 部件的 XSL 属性,请按照如何:查看联合位置返回的 XML 数据中的说明操作。若要查看联合结果 Web 部件中的 XSLT,请参阅联合结果 Web 部件 XSLT

验证要显示其数据的 XML 节点是否包含 HTML。然后请注意,此 HTML 未显示在页面上,因为 XSLT 会删除 HTML。例如,GetPlainTextFromHtml 模板内的以下标记从 RSS 源的 description 字段中删除了 HTML 标记:

<xsl:value-of select="srwrt:GetPlainTextFromHtml($Html)"/>

修改 <xsl:value-of> 标记以输出 $Html 值,而无需调用 GetPlainTextFromHtml 模板。

<xsl:value-of select="$Html"/>

备注

OpenSearch 位置的默认 XSLT 显示 OpenSearch RSS 源的 title、link 和 description 字段。只对典型 RSS 或 ATOM 源的 description 字段进行此更改。有关显示其他元数据的信息,请参阅Displaying Additional MetaData in Federated Results。有关自定义标题显示的信息,请参阅如何:自定义联合搜索结果的标题和商标图标

在将此更改保存到联合位置或联合结果 Web 部件后,HTML 标记在页上显示为转义字符。例如,您看到的是尖括号 (<>) 而不是呈现的 HTML。下一步将介绍如何更改此行为。

步骤 2:禁用输出转义

找到要显示其输出的 <xsl:value-of> 标记。例如,若要显示 RSS 或 ATOM 源的 description 字段的 HTML,请找到以下标记。

<xsl:value-of select="$DescText"/>

添加 disable-output-escaping 属性。

<xsl:value-of select="$DescText" disable-output-escaping="yes"/>

备注

disable-output-escaping 属性使 <xsl:value-of> 标记输出 HTML 而不进行任何字符转义。这会产生格式不正确的 HTML 输出。因此,请谨慎使用此属性,并只用于显示来自受信任源的有效 HTML。

步骤 3(可选):禁用截断

因为您在前面编辑的标记中的 $DescText 值是一个被截断的值,所以在标记完成之前可能会截断 description 字段中的 HTML 代码。这会导致无法正确呈现 HTML。

为了避免这一问题,请修改标记的 select 值,以便它使用未截断的值。

<xsl:value-of select="$DescLongText" disable-output-escaping="yes"/>

See Also

任务

如何:查看联合位置返回的 XML 数据

如何:自定义联合搜索结果的标题和商标图标

参考

How to: Disable Output Escaping in XML Style Sheet Transformations

其他资源

<xsl:value-of> Element