xhtml|区别|问题
文档必须是编排良好的
元素必须嵌套,尽管SGML规定层叠非法,但现有的浏览器普遍允许层叠。
正确:嵌套元素。
<p>here is an emphasized <em>paragraph</em>.</p>
不正确:层叠元素。
<p>here is an emphasized <em>paragraph.</p></em>
嵌套与层叠
元素和属性名必须小写
对所有HTML元素和属性名,XHTML 文档必须使用小写。 因为XML是大小写敏感的,所以这个差别是必须的。如 < li > 和 < LI > 是不同的标签。
对非空元素,必须使用结束标签
在基于SGML的HTML 中,一些隐含结束意义的元素允许忽略结束标签。而在基于XML的XHTML中,这种忽略不被允许。除了在DTD中被声明为空的元素,所有元素必须有结束标签。
正确:结束了的元素。
<p>here is a paragraph.</p><p>here is another paragraph.</p>
不正确:未结束元素。
<p>here is a paragraph.<p>here is another paragraph.
XHTML要求代码书写非常标准,可能有时候浏览器可以容许这样的写法,但是无法通过XHTML的验证。
属性值必须在引号中
所有的属性必须用引号,即使是数字。
正确:在引号中的属性值
<table rows="3">
不正确:不在引号中的属性值。
<table rows=3>
很基本的规范,在HTML同样应该如此。
属性最小化
XML 不支持属性最小化. 属性值对必须写全。象compact,checked这样的属性名不能不指定属性值而在元素中出现。
正确:没有最小化的属性
<dl compact="compact">
不正确:最小化属性
<dl compact>
默认的属性也需要完整的写出来。
空元素
空元素要么必须有结束标签,要么起始标签以/>结束。
正确:结束的空元素
<br/><hr/>
错误:未结束的空标签
<br><hr>
这点非常重要,很容易出现的错误。
编排良好性(Well-formedness)是XML引入的一个新概念。从本质上说,这意味着元素必须有结束标签,或者必须以特殊方式书写。