随笔-48  评论-218  文章-2  trackbacks-6
 

 XHTMLXML的一种应用,基于这一事实。那些在以SGML为基础的HTML 4中完全合法的用法应当被改变。

    文档应该是良构的
良构[1]是由XML[2] 引入的一个新概念。也就是说所有的元素都必须有结束标签或者以特殊的方式书写(如下所述),而且所有的标签必须合理地嵌套。

尽管如此,交叉使用在SGML中仍然是合法的,而且在现有的浏览器中也能够被广泛接受。

正确的:元素嵌套 

这是一个被强调的段落。

 
错误的:元素交叉 

这是一个被强调的段落。

 

元素名和属性必须统一小写
XHTML
文档把所有的HTML元素名和属性名都小写。这个区别是必须的,因为XML是大小写敏感的。比如,

· 

· 是完全不同的两个标签。


对于非空标签,也需要结束标签
基于SGMLHTML 4里面,允许特定的标签省略结束标签;这些元素暗含有结束标记。XML不允许省略结束标记。所有元素包括在DTD中声明为 空的标签都必须有结束标签。在DTD中声明为空的元素可以用结束标签或者使用空元素速记法(参见空元素)。

正确的:结束的元素 

这是一个段落。

这是另一个段落。

 
错误的:没有结束的元素 

这是一个段落。

这是另一个段落。 

属性值必须总是使用引号包裹
所有的属性值都必须使用引号包含,包括那些以数值类型出现的。

正确的:属性值使用引号 
<TD&NBSP;ROWSPAN="3"> 
错误的:属性值没有使用引号 
<TD&NBSP;ROWSPAN=3> 

属性简化
XML
不支持属性简化,属性值对必须书写完整。属性名,像compactchecked在没有指定具体值的情况下不能够使用。

正确的:没有简化属性 
<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>]]&gt;

在文档对象模型中,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.0id属性被定义为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 4XHTML中都有一套预设值(比如input元素的type属性)。在SGMLXML中,这些被称为枚举属性。在HTML 4里这些值的解释是不分大小写的,所以值TEXT等同于text。在XML里,这些值的解析是区分大小写的,在XHTML1中,所有的这些值定义为小写。

4.12. 十六进制值的实体映射

SGMLXML都允许使用十六进制的数值来映射字符。在SGML里这些映射可以使用&#Xnn;或者&#xnn;。在XML文档中,必须使用小写的方式(比如,&#xnn;)。
posted on 2006-04-20 17:01 梁广永【大海水】 阅读(153) 评论(0)  编辑 收藏 所属分类: Tech

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-09-03 19:56 编辑过
成果网帮您增加网站收入


相关链接: