2012-06-28 21 views
1

我在使用MIME为application/xml发送的XHTML文档类型的页面上遇到问题。什么定义了一个有效的XHTML页面

火狐3.6是唯一的浏览器,其中body元素的背景已不再是占据整个页面application/xml模式下,因为它应该(http://stackoverflow.com/questions/5225237/background-of-body-element) 。

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

+0

不确定您的意思是“视为有效的XHTML网页”。浏览器不关心有效性。作为'application/xml'服务的页面将用XML解析器解析,因此必须是XML格式良好的,但看起来你已经实现了。如果Firefox 3.6做了一件事,后来Firefox做其他事情,那么你可能只是遇到了FF 3.6的bug。发布一些标记+ CSS,我们可能会建议一种解决方法。 – Alohci

+0

我的意思是应该将带有DocType的XML解析为与带有DocType的XHTML + XML相同? – Hawken

+0

运行一些测试后,这是一个有趣的问题+1。不幸的是我不知道答案。 Firefox肯定将'application/xml'视为'application/xhtml + xml'。即使在最新版本中,“文档”也是如此。body'在'application/xml'中是未定义的我不知道如果有的话,规范会覆盖这个。 – Alohci

回答

0

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

即使XHTML中没有为任何元素指定默认样式(因为它是用来定义自己的语言的语言),XML仍可以用CSS呈现。要指定样式,就像在XHTML中一样,必须特别选择元素是使用display: block;还是display:inline

XML规范没有提及DOCTYPE嗅探,有些人赞成使用XML:http://hsivonen.iki.fi/doctype/#xml而不赞成这种做法,而采用命名空间和处理指令。

但是,根据https://developer.mozilla.org/en/Mozilla%27s_DOCTYPE_sniffing,Firefox 4.0之前的“嗅探只发生在以text/html发送的文档中”,而application/xml应该“触发全标准模式”。但是,这涉及区分不同的HTML模式;识别XHTML出XML的,在https://developer.mozilla.org/en/XML_in_Mozilla,我相信可以进行以下提示公认PUBLIC DOCTYPE据称是用来从“纯粹的” XML区分XHTML:

请注意,XHTML实体,像ä,仅在具有有效XHTML正式公开 标识符(或换句话说,具有PUBLIC 标识符的DOCTYPE部分)的符合XHTML文档中工作。 XHTML的实体不会在任意XML文档, 不是即使使用XHTML命名空间。”其随后是有效标识符的 列表。

但是,如果你使用的是承认的公共DOCTYPE,它仍然没有被视为真正的XHTML(例如,能够独立设计身体标签,而无需对html根进行设计 - 我似乎已经记得,至少在早些时候,XHTML/HTML多边形我认为命名空间应该已经足够了(没有命名空间,它不应该工作,因为XML +命名空间需要一个用于特定于应用程序的行为)。

+0

谢谢,虽然它有点混乱。 – Hawken

相关问题