XML CDATA 内的 HTML 使用 < 和 > 括号进行转换

2024-02-07

我有一些示例 XML:

<sample><![CDATA[Line 1<br />Line 2<br />Line 3<br />]]></sample>

我使用 ASP 使用样式表输出此 XML,如下所示:

Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlHttp.open "GET", URLxml, false
xmlHttp.send()

Set xslHttp = Server.CreateObject("Microsoft.XMLHTTP")
xslHttp.open "GET", xXsl, false
xslHttp.send()   

Set xmlDoc = Server.CreateObject("MICROSOFT.XMLDOM")
Set xslDoc = Server.CreateObject("MICROSOFT.XMLDOM")
xmlDoc.async = false
xslDoc.async = false
xmlDoc.Load xmlHttp.responseXML
xslDoc.Load xslHttp.responseXML

Response.Write xmlDoc.transformNode(xslDoc)

然而,一旦编写完毕,HTML 输出将显示为:

Line 1&lt;br /&gt;Line 2&lt;br /&gt;Line 3

我可以看到 ASP 正在转换代码中的括号,但我不知道为什么。有什么想法吗?


我有一些示例 XML:

<sample><![CDATA[Line 1<br />Line 2<br />Line 3<br />]]></sample>

这是一个sample元素与一个文本节点 child.

假设您应用恒等变换。那么结果将是:

<sample>Line 1&lt;br /&gt;Line 2&lt;br /&gt;Line 3&lt;br /&gt;</sample>

为什么?由于文本节点和属性值具有特殊字符&, < and >作为字符实体转义。

EDIT:当然,你可以使用 DOE...但是,除此之外,它是一个可选功能,无论如何,结果都将是一个文本节点(没有编码字符实体)。您将需要其他解析器 fase(当将 HTML 片段输出和编码为 (X)HTML 文档(例如在提要中)时,这可能很有用,但存在输出格式错误的风险...)。

这个样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="sample">
        <p>
            <xsl:value-of select="." disable-output-escaping="yes"/>
        </p>
    </xsl:template>
</xsl:stylesheet>

Output:

<p>Line 1<br />Line 2<br />Line 3<br /></p>

渲染为(实际标记):

Line 1
Line 2
Line 3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML CDATA 内的 HTML 使用 < 和 > 括号进行转换 的相关文章

随机推荐