如何在XHTML文档中嵌入XML文档?

时间:2013-03-17 16:32:00

标签: xml xhtml embed

例如,我该如何嵌入

<?xml version="1.0" encoding="utf-8"?>
<root>
    <node><![CDATA[Text]]></node>
</root>

在我的XHTML中?

我知道我可以把它放在CDATA部分......

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>My title</title>
</head>
<body>
<p>I am a XHTML paragraph!</p>
<div>
    <![CDATA[
    <?xml version="1.0" encoding="utf-8"?>
    <root>
        <node>Text</node>
    </root>
    ]]>
</div>
</body>
</html>

...但是我必须删除XML文件的CDATA部分,并将XML解析为文本而不是XML。

然后,我明白了......

enter image description here

......但我想要这样的事情:

enter image description here

1 个答案:

答案 0 :(得分:2)

请注意,CDATA只是一种逃避字符的方法,而不是一种嵌入方法。现在回答你的问题:

据我所知,嵌入XML文件的唯一方法是使用object标签或iframe:

<!-- Keep in mind that iframe is invalid in XHTML 1.0 and 1.1.-->
<iframe src="data:application/xml,&lt;root&gt;&lt;node&gt;Text&lt;/node&gt;&lt;/root&gt;"/>
<!-- When using `data:mime/type,[data]' the type attribute is overriden -->
<object data="data:application/xml,&lt;root&gt;&lt;node&gt;Text&lt;/node&gt;&lt;/root&gt;"/>

这里的问题是,某些浏览器只会将XML的内容显示为内联文本,而其他浏览器将显示XML查看器窗口,这可能是您想要的。

这是一张图表:

   layout engine (browser)    |   <object>    |   <iframe>
 ----------------------------------------------------------
  Gecko (Firefox)             |  inline text  |  XML viewer
  Webkit (Safari / new Opera) |  inline text  |  inline text
  Blink (Chrome/Chromium)     |  inline text  |  inline text
  Presto (old Opera)          |  XML Viewer   |  XML viewer
  Trident (IE5-IE8)           |  inline text  |  XML Viewer

由于presto正在被替换,因此您将使用iframe + firefox作为唯一可行的组合。

如果有人可以使用IE进行测试,请将结果编辑到表格中。