XML/HTML标记中的空白

问题描述:

我知道XML和HTML文本节点中的空白处理方式,但我不确定标记元素本身内部是否有空白。显然,标签内部使用空格来分隔属性,但在'<'之后或'>'之后是否有空格是有效的?XML/HTML标记中的空白

例如:

<foo> 
</foo> 

甚至:

<foo> 
</foo > 

难道这些标签有效的XML?假设它们是实际的HTML标签名称,那么HTML又如何呢?

specification (section 3.1 Start-tags, end-tags, and empty-element tags)说有是'<'和标签名之间没有空格,'</'和标签名,或内部'/>'之间。您可以在标签名称后添加空白,虽然:

<foo   > 
</foo  > 
<bar 
/> 
+0

糟糕。这将教会我仔细检查规格... +1 – 2010-07-23 00:40:47

+0

是否有效,然后将长HTML标签分成不同的行?例如:' (newline)' - 例如,在内含PHP代码的长标签的情况下,使其更具可读性。 – iDontKnowBetter 2012-07-09 00:31:15

+1

@fakaff:是的,这是有效的。换行符,制表符和空格都是空格字符,并且可以在标记名称之后以及属性之间(甚至在属性中的“=”附近)具有尽可能多的空白区域。 – Guffa 2012-07-09 00:36:29

<//>是令牌,因此两个字符之间的空格将是语法错误。和Guffa pointed out一样,开放的令牌和名称之间不允许有空格。但是,您可以在元素标记和关闭>(或/>)令牌之间添加空格。

EDIT反映Guffa正确引用XML规范。

的HTML [5]标准似乎与XML标准完全相同同意,由Guffa描述...

http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#start-tags

您不能以空格开始,但可以(可选)以一个(在第二个尖括号之前关闭第一个标记)结束。

+0

这个答案没有增加任何现有的。 – Pyves 2017-07-15 08:47:25