XHTML是XML的一种应用,基于这一事实。那些在以SGML为基础的HTML 4中完全合法的用法应当被改变。
文档应该是良构的
良构[1]是由XML[2] 引入的一个新概念。也就是说所有的元素都必须有结束标签或者以特殊的方式书写(如下所述),而且所有的标签必须合理地嵌套。
尽管如此,交叉使用在SGML中仍然是合法的,而且在现有的浏览器中也能够被广泛接受。
正确的:元素嵌套
这是一个被强调的段落。
错误的:元素交叉
这是一个被强调的段落。
元素名和属性必须统一小写
XHTML文档把所有的HTML元素名和属性名都小写。这个区别是必须的,因为XML是大小写敏感的。比如,
· 和
· 是完全不同的两个标签。
对于非空标签,也需要结束标签
基于SGML的HTML 4里面,允许特定的标签省略结束标签;这些元素暗含有结束标记。XML不允许省略结束标记。所有元素包括在DTD中声明为 空的标签都必须有结束标签。在DTD中声明为空的元素可以用结束标签或者使用空元素速记法(参见空元素)。
正确的:结束的元素
这是一个段落。
这是另一个段落。
错误的:没有结束的元素
这是一个段落。
这是另一个段落。
属性值必须总是使用引号包裹
所有的属性值都必须使用引号包含,包括那些以数值类型出现的。
正确的:属性值使用引号
<TD&NBSP;ROWSPAN="3">
错误的:属性值没有使用引号
<TD&NBSP;ROWSPAN=3>
属性简化
XML不支持属性简化,属性值对必须书写完整。属性名,像compact和checked在没有指定具体值的情况下不能够使用。
正确的:没有简化属性
<DL&NBSP;COMPACT="COMPACT">
错误的:简化属性
<DL&NBSP;COMPACT>
空元素
空元素必须有一个结束标签,或者用 /> 来结束开始标签。例如,
或者
。
正确的:结束空标签
错误的:没有结束空标签
属性值中空白字符的处理
当客户端在处理属性时,它们依据的是XML的章节3.3.3
祛除前缀和後缀的空白字符。
将一个或多个空白字符序列映射为单个词间空格。
脚本和样式元素
在XHTML里面,脚本和样式的元素被声明为具有 #PCDATA 内容。因此,<和&会被认为是标记的开始,另外<和 &会被认为 XML 解释器认为是实体映射被分别解释成为<和&。从而将脚本或者样式元素包裹在 CDATA 标记的部分以避免这些实体扩展。
<SCRIPT&NBSP;TYPE="TEXT javascript">
<![CDATA[</P>
<P>... 没有转义处理的内容...</P>
<P>]]>
在文档对象模型中,CDATA部分被XML解释器认为是节点,参见文档对象模型 <A&NBSP;HREF="HTTP: level-one-core.html#ID-E067D597" REC-DOM-Level-1 TR www.w3.org>章节1.3的第一级别推荐 [<A&NBSP;HREF="HTTP: TR www.w3.org #ref-dom" xhtml1>DOM] 。
一种替代方法就是使用外部的脚本和样式文件。
4.9. SGML 排斥
SGML赋予DTD作者将特定的元素排斥在某个元素之外的能力。此种限制(被称为排斥)在XML中是不可能的。
例如,HTML 4的严格文档类型描述禁止“a ”作为子元素嵌套在其他“a ”的内部。这在XML中是不可能检查出这种限制的。尽管这种限制无法在DTD中定义,也不要嵌套使用某些特定的元素。关于此类元素和不能嵌套使用的元素概览可以在标准的<A&NBSP;HREF="HTTP: TR www.w3.org xhtml1 #prohibitions"> 元素限制里找到。
4.10. 拥有“ id”和“ name”属性的元素
HTML 4定义了a, applet, form, frame, iframe, img, and map元素的 name属性。HTML 4还引入了id属性。这两个属性被设计用作片段标识符。
在XML里面,片段标识符是ID类型的,而且每个元素只能拥有单一的ID类型的属性。所以,在XHTML 1.0中id属性被定义为ID类型。为了确保XHTML 1.0文档是构建优良的XML文档,XHTML 1.0文档在为以上所列元素定义片段标识符时必须使用id属性。当XHTML文档作为text/html媒体类型使用时,确保此类锚点的向後兼容性信息参见<A&NBSP;HREF="HTTP: TR www.w3.org xhtml1 #guidelines">HTML 兼容性指南。
注意:在XHTML 1.0中,不赞成此类元素拥有name属性,在XHTML的後续版本中将被去掉。
4.11. 拥有预设值的属性
有一些属性在HTML 4和XHTML中都有一套预设值(比如input元素的type属性)。在SGML和XML中,这些被称为枚举属性。在HTML 4里这些值的解释是不分大小写的,所以值TEXT等同于text。在XML里,这些值的解析是区分大小写的,在XHTML1中,所有的这些值定义为小写。
4.12. 十六进制值的实体映射
SGML和XML都允许使用十六进制的数值来映射字符。在SGML里这些映射可以使用nn;或者nn;。在XML文档中,必须使用小写的方式(比如,nn;)。
posted on 2006-04-20 17:01
梁广永【大海水】 阅读(153)
评论(0) 编辑 收藏 所属分类:
Tech