我有一个 XML 文档,其中包含一个元素 XHTML 片段,特别是一个或多个p标签,它可以包含更多的 XHTML 标签,例如em、span等。这些都在“xhtml”命名空间中,并且 XSD 已经导入了 XHTML严格的模式,所以在这方面一切都很好。我的问题是这样的:
我的应用程序需要将这些 XHTML 段落显示为文档。我的想法是将它们包装在一个 XHTML 文档中,并在 body 标记上指定一个命名空间,如下所示:
<!-- Stock XHTML pre-amble from application -->
<html>
<head>
<meta http-equiv="content-type"
content="application/xhtml+xml;charset=utf-16" />
</head>
<body xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Elements from XML document -->
<xhtml:p>Namespaced paragraph from XML</xhtml:p>
<xhtml:p>A partly <xhtml:em>italicised</xhtml:em> paragraph from XML</xhtml:p>
<!-- Post-amble -->
</body>
</html>
这样,在将文档放在一起时,我就不必从 XHTML 元素中删除所有名称空间。
虽然这在 Firefox 中正确显示,但如果我将其保存为文件,在 System.Windows.Forms.WebBrowser 控件 (.NET 3.0) 中,两个段落一起流动并且em被忽略(同样的事情发生在 IE8 中)。换句话说,WebBrowser 不会理解命名空间,并将xhtml:p视为未知元素。
从纯学术的角度来看,我很好奇 Firefox 或 IE8 是否适合这里,但我更感兴趣的是这个问题的实用解决方案,如果存在的话。