什么定义了有效的XHTML页面

时间:2012-06-28 05:01:08

标签: xml xhtml

我在使用MIME application/xml发送的XHTML文档类型的页面上遇到问题。

Firefox 3.6是唯一一个body元素背景在application/xml模式下不再占据整页的浏览器(http://stackoverflow.com/questions/5225237/background) -of-体元件)。

这应该发生吗?是否应将具有DOCTYPE XHTML的纯XML的MIME视为XHTML网页?

1 个答案:

答案 0 :(得分:0)

https://stackoverflow.com/a/5225321/271577中使用相同的引用,它取决于根元素。虽然可以对XHTML进行例外处理,但如果通过检测无法识别内容类型(无论是DOCTYPE嗅探,命名空间检查等),那么很可能XML不可能呈现为XTHML,而是XML。

XML可以使用CSS进行渲染,即使它没有像XHTML那样分配给任何元素的默认样式(因为它是一种定义自己语言的语言)。要分配样式,就像在XHTML中一样,必须特别选择元素是使用display: block;还是display:inline

XML规范没有提到DOCTYPE嗅探,并且一些人不鼓励这种做法:http://hsivonen.iki.fi/doctype/#xml支持命名空间和处理指令。

但是根据https://developer.mozilla.org/en/Mozilla%27s_DOCTYPE_sniffing,Firefox之前的“嗅探仅发生在以text / html发送的文档”,而application / xml应该“触发全标准模式”。但是,这是指区分不同的HTML模式;要在https://developer.mozilla.org/en/XML_in_Mozilla中识别XML格式的XHTML,我相信以下内容可能会建议使用公认的PUBLIC DOCTYPE来区分XHTML和“纯”XML:

  

请注意,像ä这样的XHTML实体仅适用于   符合具有有效XHTML Formal Public的XHTML文档   标识符(或换句话说,带有PUBLIC的DOCTYPE部分   标识符)。 XHTML实体不能在任意XML文档中工作,   即使使用了XHTML命名空间也没有。“然后是一个   有效标识符列表。

但是如果你使用的是公认的PUBLIC DOCTYPE并且它仍然没有被视为真正的XHTML(例如,能够单独设置body标签的样式,而不需要设置html root的样式 - 我似乎记得这样的做法对于XHTML / HTML多语言文档来说,至少在早期可能是必要的,然后我的猜测也就是它是一个bug。我还认为命名空间应该足够(并且没有命名空间,它应该不起作用,因为XML +命名空间需要一个用于特定于应用程序的行为)。