如何在XSLT中的属性中呈现HTML

时间:2015-05-21 19:11:45

标签: xml xslt sharepoint sharepoint-2010 xslt-1.0

说我有以下XML:

<root>
    <node attr="<b>hi</b>" />
    <node attr="<b>bye</b>" />
</root>

如何获取XSLT 1.0代码以在属性中呈现实际的HTML?

这不起作用,因为它输出<b>hi</b>

<xsl:value-of select="@attr" disable-output-escaping="yes"/>

有什么想法吗?

澄清

我在DVWP WebPart中的SharePoint 2010上使用它。 WebPart将允许我使用XSLT将列表返回的XML转换为浏览器上显示的HTML。现在,渲染的输出是<b>hi</b>而不是粗体文本。我想我需要做的是禁用 - 输出 - 转发两次。第一次将获得<b>hi</b>,第二次将被渲染。有意义吗?

1 个答案:

答案 0 :(得分:2)

你要求的不是。 XSL转换的结果是文本文档:它可以是XML,HTML或纯文本(事实上,XML和HTML也是纯文本文档的类型)。

在某些应用程序将文本标记为粗体后,仅在屏幕上存在粗体文本。对于HTML标记,执行渲染的应用程序是Web浏览器。

如果要查看转换产生的HTMl的渲染视图,则需要在处理链的末尾插入浏览器。一些XSLT编辑器有一个内置的Web浏览器,允许您在&#34; raw&#34;之间切换结果视图。结果和渲染视图。但这与XSL转换本身无关。

根据您的澄清添加:

关于{em>可能与您的情况相关的disable-output-escaping,您应该了解以下两件事:

  1.   

    不需要XSLT处理器来支持禁用输出       漏出。

  2.   

    XSLT处理器只能禁用输出转义   控制结果树的输出方式。这可能并不总是如此   案件。

  3. 这些是XSLT 1.0 specification的直接引用。

    我不确定SharePoint是如何工作的,但是如果 - 例如 - XSLT转换将其结果作为DOM树直接传递给浏览器,而不是将其序列化为&#34;字节序列&#39; (即文件),然后disable output escaping将无效。