“XHTML”的版本间的差异

来自Blueidea
跳转至: 导航搜索
(新页面: '''可扩展超文本置标语言'''(e'''X'''tensible '''H'''yper'''T'''ext '''M'''arkup '''L'''anguage,XHTML),是一种置标语言,表现方式与超文本置标语言...)
 
 
第1行: 第1行:
'''可扩展超文本置标语言'''(e'''X'''tensible '''H'''yper'''T'''ext '''M'''arkup '''L'''anguage,XHTML),是一种[[置标语言]],表现方式与[[超文本置标语言]]([[HTML]])类似,不过语法上更加严格。从继承关系上讲,HTML是一种基于[[标准通用置标语言]](SGML)的应用,非常灵活,而XHTML则基于[[可扩展置标语言]]([[XML]]),XML是SGML的一个子集。XHTML 1.0在[[2000年]][[1月26日]]成为[[W3C]]的推荐标准。
+
'''可扩展超文本置标语言'''(e'''X'''tensible '''H'''yper'''T'''ext '''M'''arkup '''L'''anguage,XHTML),是一种置标语言,表现方式与超文本置标语言([[HTML]])类似,不过语法上更加严格。从继承关系上讲,HTML是一种基于标准通用置标语言(SGML)的应用,非常灵活,而XHTML则基于可扩展置标语言([[XML]]),XML是SGML的一个子集。XHTML 1.0在2000年1月26日成为[[W3C]]的推荐标准。
  
==概述==
 
[[Image:W3C valid XHTML 1.0 icon.png|frame|right| 该图标由W3C提供,用于放置在通过 [http://validator.w3.org/ W3C标记验证器]的XHTML文档中。]]
 
  
XHTML是当前HTML版的继承者。HTML语法要求比较松散,这样对网页编写者来说,比较方便,但对于机器来说,语言的[[语法]]越松散,处理起来就越困难,对于传统的计算机来说,还有能力兼容松散语法,但对于许多其他设备,比如手机,难度就比较大。因此产生了由[[DTD]]定义规则,语法要求更加严格的XHTML。
 
 
大部分常见的浏览器都可以正确地解析XHTML,即使老一点的浏览器,XHTML作为HTML的一个子集,许多也可以解析。也就是说,几乎所有的网页浏览器在正确解析HTML的同时,可兼容XHTML。当然,从[[HTML]]完全转移到XHTML,还需要一些过程。
 
 
跟[[CSS]](Cascading Style Sheets,层叠式样式表)结合后,XHTML能发挥真正的威力;这使实现样式跟内容的分离的同时,又能有机地组合网页代码,在另外的单独文件中,还可以混合各种XML应用,比如[[MathML]]、[[SVG]]。
 
 
从[[HTML]]到XHTML过渡的变化比较小,主要是为了适应[[XML]]。最大的变化在于文档必须是[[良构]]的,所有[[标签]]必须闭合,也就是说开始标签要有相应的结束标签。另外,XHTML中所有的标签必须小写。而按照HTML 2.0以来的传统,很多人都是将标签大写,这点两者的差异显著。在XHTML中,所有的参数值,包括数字,必须用双引号括起来(而在[[SGML]]和HTML中,引号不是必须的,当内容只是数字、字母及其它允许的特殊字符时,可以不用引号)。所有元素,包括空元素,比如img、br等,也都必须闭合,实现的方式是在开始标签末尾加入斜扛,比如<code><nowiki><img … /></nowiki></code> 、<code><nowiki><br /></nowiki></code>。省略参数,比如<code><nowiki><option selected></nowiki></code>,也不允许,必须用<code><nowiki><option selected="selected"></nowiki></code>。两者的详细差别,可通过[http://www.w3.org/TR/xhtml1/#diffs W3C XHTML说明]来查阅。
 
 
==版本==
 
至现时为止,XHTML共有以下几个版本:
 
 
* XHTML 1.0 Transitonal (过渡版)
 
* XHTML 1.0 Strict (严格版)
 
* XHTML 1.0 Frameset (框架版)
 
* XHTML 1.1
 
* XHTML基础
 
 
其中,“XHTML 1.0 Transitonal”是参照“HTML 4.01 Transitional”改编、“XHTML 1.0 Strict”是参照“HTML 4.01 Strict”改编、“XHTML 1.0 Frameset”是参照“HTML 4.01 Frameset”改编。
 
 
在[[微软]][[Internet Explorer]] 5.0所新增的<code>&lt;ruby&gt;</code>小字注解标签,在XHTML 1.1得到支援(参看[[旁註標記]])。
 
 
==语法==
 
XHTML语言必须符合XML的格式,例如,<code>&lt;br&gt;</code>要写成<code>&lt;br /&gt;</code>、使用了<code>&lt;p&gt;</code>之后必须有一<code>个&lt;/p&gt;</code>以结束段落。而且,XHTML标签必须使用小写字母,如<code>&lt;br /&gt;</code>不能写为 <code>&lt;BR /&gt;;</code>每一个属性都必须使用引号包住,如必须使用<code>&lt;img src="abc.jpg" /&gt;</code>而不能使用<code>&lt;img src=abc.jpg&gt;</code>。这些做法的目的,是使一个XHTML[[网页]]能够被[[网页浏览器]]正确及较快地[[编译]]。
 
 
==和HTML 4的区别==
 
(翻译自[http://www.w3.org/TR/xhtml1/#diffs W3C XHTML说明])这部分涉及内容广泛.
 
 
XHTML是[[XML]]的一种应用,基于这一事实。那些在以[[SGML]]为基础的[[HTML 4]]中完全合法的用法应当被改变。
 
===文档应该是良构的 ===
 
[[良构]](Well-formedness)[http://www.w3.org/TR/xhtml1/#wellformed]是由[[XML]][http://www.w3.org/TR/xhtml1/#ref-xml] 引入的一个新概念。也就是说所有的元素都必须有结束标签或者以特殊的方式书写(如下所述),而且所有的标签必须合理地嵌套。
 
 
尽管如此,交叉使用在SGML中仍然是合法的,而且在现有的浏览器中也能够被广泛接受。
 
:正确的:元素嵌套
 
::<code>&lt;p&gt;&lt;em&gt;这是一个被强调的段落。&lt;/em&gt;&lt;/p&gt;</code>
 
:错误的:元素交叉
 
::<code>&lt;em&gt;&lt;p&gt;这是一个被强调的段落。&lt;/em&gt;&lt;/p&gt;</code>
 
 
===元素名和属性必须统一小写===
 
XHTML文档把所有的HTML元素名和属性名都小写。这个区别是必须的,因为XML是大小写敏感的。比如,<code>&lt;li&gt;</code>和<code>&lt;LI&gt;</code>是完全不同的两个标签。
 
 
===对于非空标签,也需要结束标签===
 
基于SGML的HTML 4里面,允许特定的标签省略结束标签;这些元素暗含有结束标记。XML不允许省略结束标记。所有元素包括在DTD中声明为 空的标签都必须有结束标签。在[[DTD]]中声明为空的元素可以用结束标签<em>或者</em>使用空元素速记法(参见[http://www.w3.org/TR/xhtml1/#h-4.6 空元素])。
 
 
:正确的:结束的元素
 
::<code>&lt;p&gt;这是一个段落。&lt;/p&gt;&lt;p&gt;这是另一个段落。&lt;/p&gt;</code>
 
:错误的:没有结束的元素
 
::<code>&lt;p&gt;这是一个段落。&lt;p&gt;这是另一个段落。</code>
 
 
===属性值必须总是使用引号包裹===
 
所有的属性值都必须使用引号包含,包括那些以数值类型出现的。
 
:正确的:属性值使用引号
 
::<code>&lt;td rowspan=&quot;3&quot;&gt;</code>
 
:错误的:属性值没有使用引号
 
::<code>&lt;td rowspan=3&gt;</code>
 
 
===禁止属性简化===
 
XML不支持属性简化,属性值对必须书写完整。属性名,像compact和checked在没有指定具体值的情况下不能够使用。
 
 
:正确的:没有简化属性
 
::<code>&lt;dl compact=&quot;compact&quot;&gt;</code>
 
:错误的:简化属性
 
::<code>&lt;dl compact&gt;</code>
 
 
===空元素===
 
空元素必须有一个结束标签,或者用<code>/&gt;</code>来结束开始标签。例如,<code>&lt;br/&gt;</code>或者<code>&lt;hr&gt;&lt;/hr&gt;</code> 。
 
 
;正确的:结束空标签:<code>&lt;br/&gt;&lt;hr/&gt; </code>
 
;错误的:没有结束空标签:<code>&lt;br&gt;&lt;hr&gt;</code>
 
 
===属性值中空白字符的处理===
 
当客户端在处理属性时,它们依据的是XML的章节3.3.3
 
*祛除前缀和后缀的空白字符。
 
*将一个或多个空白字符序列映射为单个词间空格。
 
 
===脚本和样式元素===
 
在XHTML里面,脚本和样式的元素被声明为具有''' #PCDATA''' 内容。因此,<code>&lt;和&amp;</code>会被认为是标记的开始,另外<code>&amp;lt;</code>和<code> &amp;amp;</code>会被认为 XML 解释器认为是实体映射被分别解释成为<code>&lt;</code>和<code>&amp;</code>。从而将脚本或者样式元素包裹在 CDATA 标记的部分以避免这些实体扩展。
 
 
<code>&lt;script type=&quot;text/javascript&quot;&gt;
 
'''// &lt;![CDATA[ '''
 
''' ... 没有转义处理的内容... '''
 
'''// ]]&gt; '''
 
&lt;/script&gt;
 
</code>
 
在文档对象模型中,CDATA部分被XML解释器认为是节点,参见文档对象模型 <a href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597">章节1.3</a>的第一级别推荐 [http://www.w3.org/TR/xhtml1/#ref-dom|DOM] 。
 
一种替代方法就是使用外部的脚本和样式文件。
 
 
====SGML 排斥====
 
SGML赋予DTD作者将特定的元素排斥在某个元素之外的能力。此种限制(被称为排斥)在XML中是不可能的。
 
例如,HTML 4的严格文档类型描述禁止“'''a''' ”作为子元素嵌套在其他“'''a''' ”的内部。这在XML中是不可能检查出这种限制的。尽管这种限制无法在DTD中定义,也不要嵌套使用某些特定的元素。关于此类元素和不能嵌套使用的元素概览可以在标准的[http://www.w3.org/TR/xhtml1/#prohibitions|元素限制]里找到。
 
 
====拥有“ 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'''媒体类型使用时,确保此类锚点的向后兼容性信息参见[http://www.w3.org/TR/xhtml1/#guidelines|HTML 兼容性指南。
 
 
注意:在XHTML 1.0中,不赞成此类元素拥有name属性,在XHTML的后续版本中将被去掉。
 
 
====拥有预设值的属性====
 
有一些属性在HTML 4和XHTML中都有一套预设值(比如'''input'''元素的'''type'''属性)。在SGML和XML中,这些被称为<em>枚举属性</em>。在HTML 4里这些值的解释是<em>不分大小写</em>的,所以值'''TEXT'''等同于'''text'''。在XML里,这些值的解析是<em>区分大小写</em>的,在XHTML1中,所有的这些值定义为小写。
 
 
====十六进制值的实体映射====
 
SGML和XML都允许使用十六进制的数值来映射字符。在[[SGML]]里这些映射可以使用'''&amp;#Xnn;'''或者'''&amp;#xnn;'''。在XML文档中,必须使用小写的方式(比如,'''&amp;#xnn;''')。
 
  
 
==参看==
 
==参看==
第110行: 第7行:
 
*[[HTML]]
 
*[[HTML]]
 
*[[CSS]]
 
*[[CSS]]
*[[SGML]]
 
*[[Unicode]]
 
 
*[[Acid2]]
 
*[[Acid2]]
 
==外部链接==
 
==外部链接==
第120行: 第15行:
 
*[http://www.dreamdu.com/xhtml/ 中文的XHTML教程]
 
*[http://www.dreamdu.com/xhtml/ 中文的XHTML教程]
 
*[http://www.w3.org/MarkUp/ w3c HTML 首页]
 
*[http://www.w3.org/MarkUp/ w3c HTML 首页]
{{网页技术与标准}}
 
[[Category:XML]]
 
[[Category:HTML]]
 
[[Category:W3C标准]]
 

2008-10-18T08:45:22的最后版本

可扩展超文本置标语言(eXtensible HyperText Markup Language,XHTML),是一种置标语言,表现方式与超文本置标语言(HTML)类似,不过语法上更加严格。从继承关系上讲,HTML是一种基于标准通用置标语言(SGML)的应用,非常灵活,而XHTML则基于可扩展置标语言(XML),XML是SGML的一个子集。XHTML 1.0在2000年1月26日成为W3C的推荐标准。


参看

外部链接