我真的很喜欢使用普通<tag/>
格式对标签进行“短暂关闭”,但遗憾的是在浏览器中使用这种方法(即chrome)会导致非常意外的行为。
在文件中我有:
<div/><div/>
它被解释为
<div>
<div></div>
<div>
无论我使用什么DOCTYPE(XHTML)或HTML5,我都会以错误的方式得到它。
我也在命名空间<widget:aSampleWidgetA/>
<widget:aSampleWidgetB/>
中使用此“符号”来表示自定义标记,这也会引入此问题。
我不想使用完整的关闭符号,因为它会在代码中造成很多视觉混乱。 有没有办法强制浏览器将这些标记解析为正确的XML?
答案 0 :(得分:6)
道歉,我找不到很好的文档,但我怀疑这是因为div
不是有效的自我结束标记。查看XHTML DTD,空标记专门标记为 EMPTY ,div
不标记,因此Chrome的行为就像是html5,其中结束标记可以保留并且最好猜测关闭它们的位置。
答案 1 :(得分:3)
有一种方法可以使浏览器(IE8及以下版本除外)将标记解析为XML。您需要使用正确的XHTML内容类型application/xhtml+xml
来提供服务。
Doctype与解析无关,它只影响渲染模式(标准或Quirks)。当作为text/html
投放时,所有页面都将通过HTML规则(现代浏览器的HTML5规则)进行解析,这实际上意味着“自我关闭”中的结束斜线。语法被忽略,元素的能力是自闭的&#39;实际上在解析器中是硬编码的。 Div
和自定义标签不具备此功能。