如何在 XSLT 的属性中呈现 HTML
how can I render HTML in attribute in XSLT
假设我有以下 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"/>
有什么想法吗?
澄清
我在 SharePoint 2010 的 DVWP WebPart 中使用它。 WebPart 将允许我使用 XSLT 将列表返回的 XML 转换为浏览器上显示的 HTML。现在呈现的输出是 <b>hi</b>
而不是粗体文本。我想我需要做的是两次禁用输出转义。第一次会得到 <b>hi</b>
,第二次会被渲染。有道理吗?
你要求的东西不是。 XSL转换的结果是文本文档:可以是XML、HTML或纯文本(其实XML和HTML也是纯文本文档的类型).
在某些应用程序呈现标记为粗体的文本之后,这样的粗体文本仅存在于屏幕上。在 HTML 标记的情况下,执行呈现的应用程序是 Web 浏览器。
如果您想查看转换后 HTMl 的渲染视图,您需要在处理链的末尾插入一个浏览器。一些 XSLT 编辑器有一个内置的 Web 浏览器,允许您在 "raw" 结果和渲染视图之间切换结果视图。但这与 XSL 转换本身无关。
根据您的说明添加:
关于 disable-output-escaping
,有两件事您应该了解,可能 与您的情况相关:
An XSLT processor is not required to support disabling output
escaping.
An XSLT processor will only be able to disable output escaping if it
controls how the result tree is output. This may not always be the
case.
这些直接引用自 XSLT 1.0 specification。
我不确定 SharePoint 是如何工作的,但是如果 - 例如 - XSLT 转换将其结果作为 DOM 树直接传递给浏览器,而不是将其序列化为“字节序列”(即文件),则 disable output escaping
将无效。
假设我有以下 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"/>
有什么想法吗?
澄清
我在 SharePoint 2010 的 DVWP WebPart 中使用它。 WebPart 将允许我使用 XSLT 将列表返回的 XML 转换为浏览器上显示的 HTML。现在呈现的输出是 <b>hi</b>
而不是粗体文本。我想我需要做的是两次禁用输出转义。第一次会得到 <b>hi</b>
,第二次会被渲染。有道理吗?
你要求的东西不是。 XSL转换的结果是文本文档:可以是XML、HTML或纯文本(其实XML和HTML也是纯文本文档的类型).
在某些应用程序呈现标记为粗体的文本之后,这样的粗体文本仅存在于屏幕上。在 HTML 标记的情况下,执行呈现的应用程序是 Web 浏览器。
如果您想查看转换后 HTMl 的渲染视图,您需要在处理链的末尾插入一个浏览器。一些 XSLT 编辑器有一个内置的 Web 浏览器,允许您在 "raw" 结果和渲染视图之间切换结果视图。但这与 XSL 转换本身无关。
根据您的说明添加:
关于 disable-output-escaping
,有两件事您应该了解,可能 与您的情况相关:
An XSLT processor is not required to support disabling output escaping.
An XSLT processor will only be able to disable output escaping if it controls how the result tree is output. This may not always be the case.
这些直接引用自 XSLT 1.0 specification。
我不确定 SharePoint 是如何工作的,但是如果 - 例如 - XSLT 转换将其结果作为 DOM 树直接传递给浏览器,而不是将其序列化为“字节序列”(即文件),则 disable output escaping
将无效。