说我有以下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>
,第二次将被渲染。有意义吗?
答案 0 :(得分:2)
你要求的不是。 XSL转换的结果是文本文档:它可以是XML,HTML或纯文本(事实上,XML和HTML也是纯文本文档的类型)。
在某些应用程序将文本标记为粗体后,仅在屏幕上存在粗体文本。对于HTML标记,执行渲染的应用程序是Web浏览器。
如果要查看转换产生的HTMl的渲染视图,则需要在处理链的末尾插入浏览器。一些XSLT编辑器有一个内置的Web浏览器,允许您在&#34; raw&#34;之间切换结果视图。结果和渲染视图。但这与XSL转换本身无关。
根据您的澄清添加:
关于{em>可能与您的情况相关的disable-output-escaping
,您应该了解以下两件事:
不需要XSLT处理器来支持禁用输出 漏出。
XSLT处理器只能禁用输出转义 控制结果树的输出方式。这可能并不总是如此 案件。
这些是XSLT 1.0 specification的直接引用。
我不确定SharePoint是如何工作的,但是如果 - 例如 - XSLT转换将其结果作为DOM树直接传递给浏览器,而不是将其序列化为&#34;字节序列&#39; (即文件),然后disable output escaping
将无效。