0

我有一个 XML 文档,其中包含一个元素 XHTML 片段,特别是一个或多个p标签,它可以包含更多的 XHTML 标签,例如emspan等。这些都在“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 是否适合这里,但我更感兴趣的是这个问题的实用解决方案,如果存在的话。

4

1 回答 1

0

IE8 不支持“真正的”XHTML,因此带有冒号的元素根本不在命名空间中。事实上,如果您在 IE8 中检查 DOM,您会发现元素甚至没有正确地包裹文本。

我怀疑 WebBrowser 控件也是如此。

于 2012-05-11T15:50:18.620 回答