自动关闭创建孩子而不是兄弟姐妹

时间:2013-07-25 01:17:37

标签: google-chrome browser xml-parsing custom-tag

我真的很喜欢使用普通<tag/>格式对标签进行“短暂关闭”,但遗憾的是在浏览器中使用这种方法(即chrome)会导致非常意外的行为。

在文件中我有:

<div/><div/> 

它被解释为

<div>
   <div></div>
<div>

无论我使用什么DOCTYPE(XHTML)或HTML5,我都会以错误的方式得到它。 我也在命名空间<widget:aSampleWidgetA/> <widget:aSampleWidgetB/>中使用此“符号”来表示自定义标记,这也会引入此问题。

我不想使用完整的关闭符号,因为它会在代码中造成很多视觉混乱。 有没有办法强制浏览器将这些标记解析为正确的XML?

2 个答案:

答案 0 :(得分:6)

道歉,我找不到很好的文档,但我怀疑这是因为div不是有效的自我结束标记。查看XHTML DTD,空标记专门标记为 EMPTY div不标记,因此Chrome的行为就像是html5,其中结束标记可以保留并且最好猜测关闭它们的位置。

或者,如果您不喜欢html的外观,也许您可​​能更喜欢hamljade模板。

答案 1 :(得分:3)

有一种方法可以使浏览器(IE8及以下版本除外)将标记解析为XML。您需要使用正确的XHTML内容类型application/xhtml+xml来提供服务。

Doctype与解析无关,它只影响渲染模式(标准或Quirks)。当作为text/html投放时,所有页面都将通过HTML规则(现代浏览器的HTML5规则)进行解析,这实际上意味着“自我关闭”中的结束斜线。语法被忽略,元素的能力是自闭的&#39;实际上在解析器中是硬编码的。 Div和自定义标签不具备此功能。