打印

[教程] HTML的领悟(HTML Mastery)[第一章第2节]--XHTML和HTML的比较

本主题由 水月あ无痕 于 2008-8-4 10:32 设置高亮

HTML的领悟(HTML Mastery)[第一章第2节]--XHTML和HTML的比较

XHTML和HTML的比较

关于是使用XHTML还是HTML这个问题经常在一般的网页设计中出现。大多数的网页设计师都会倾向于使用XHTML,因为它被认为是新的,进化版的,而且“X”听起来非常酷。事实上,XHTML并没有像人们认为的那样和HTML有很大的差别,这一章这一节的目的是讨论XHTML和更早版本的HTML之间的不同点。揭穿对XHTML和HTML的误解,检查在MIME[ MIME:Multipurpose Internet Mail Extension protocol, 多用途的网际邮件扩充协议]类型的背景下,是否优先使用XHTML比使用HTML更加的恰当。

XHTML和HTML的区别
有一些规则是在XTHML下适用而在HTML中不适用的。这些是显而易见的,你也许已经知道一些(或者全部),但是我要重申:


  • <html>,<head>,<body>标签都是在XHTML中必须的。
  • <html>必须包括一个含有http://www.w3.org/1999/xhtml的xmlns属性。
  • 所有的元素必须闭合。我在前文已经简单的涉及到了,但是必须记住,一个开放的标签必须有一个等价的闭合标签(如果它是一个包容性标签)或者一个空格-斜杠-反三角符号( />)。
  • 所有的标签必须小写。
  • 所有的属性必须用单引号或者双引号括起,因而,class=page是错误的,但是class="page"和class='page'都是对的。
  • 所有的属性都必须有确切含义。一些属性,像在<option>标签里使用的选择属性,可以在HTML中使用简写——<option selected>data</option>这样也是正确的,但是在XHTML中你必须这样写<option selected="selected">data</option>。
  • &(=and)等记号必须用编码。也就是说,你必须用&来代替&。这个无论在哪里都是必须的,包括在你的内容或者是URL链接里。


XHTML和HTML之间的误解


当许多年前XHTML第一次发布的时候,被许多人看做是网页的"救世主"——它能带我们远离老式样式以及表格布局组成网页的老思路。随之而来的是更加严谨的书写规则,XTHML并不像想的那样更加容易书写,更加容易维护以及全面的赶超HTML。

事实上,除了前面章节所述的不同以外,XHTML相比HTML并没有什么不同。相比于你使用的什么版本而言,你怎么写才是关键[ 译者注:原文为what matters more than which version you use is how you write it]。下面的章节将追寻一些你可能听说过的误解,并且它们背后的真相。

XHTML相比HTML拥有更多/更少的元素

是的——XHTML相比HTML拥有更多数目以及更少数目的元素。这在于你的文档格式。让我们仅仅比较下HTML 4.01 Strict以及XHTML 1.0 Strict,后者比前者拥有更少的元素,一些在HTML 4.01 Strict中被抨击的元素在XHTML 1.0 Strict中被去除了:<dir>,<menu>,<center>,<isindex>,<applet>,<font>,<basefont>,<s>,<strike>,<u>,<iframe>,以及<noframes>。包括可能例外的<iframe>(通常被用来在页面中包含广告页),你不会以任何方式来使用任何一个这些元素,同时它们都有一个更具有意义的元素形式(比如用<del>来代替<s>和<strike>,这个我将会在下章详细说明)或者CSS(比如使用CSS中的文字属性来替换<font>元素)。所以对比两个Strict,答案就是XHTML 1.0拥有更少的元素,但是因为它们都是在HTML 4.01中受争议的,所以并不会让你的书写习惯有任何的不同。
引用:
所有刚才提及的元素连同在<a>元素中使用的target一类的属性都是在文本传输中允许的。
在你观察XHTML 1.1时仍旧有一个不同的地方,那就是在东亚印刷样式中作为代表性介绍使用的Ruby elements[ 请到www.w3.org/TR/ruby获取更多信息]。它完全的抛弃了name属性以及用xml:lang来取代lang属性。XHTML 1.1必定或多或少的会在以后服务于application/xhtml+xml的MIME类型。

XHTML拥有更好的侦错性/更加严谨/比HTML更加的富有活力

是或者不是——这个取决与你是做什么的。如果你使用text/html的MIME类型来传输你的XHTML页面,那么,你的架构相比于用HTML来说却是不够好的,并且浏览器会经常试图修复你架构中的所有错误,以及展现它们假想的你所表达的意思。如果你使用application/xhtml+xml的MIMIE类型来传输你的XHTML页面,那么微小的错误将会导致你的页面无法显示,并且只展示一个XML分析错误。我会在后面的章节中详细的讲述有关MIME类型的。

XHTML比HTML更加的语义化/结构化

并非如此。就像先前提及的一样,不要把它看做一门你使用的技术,真正的价值所在是你怎样使用它。你或许会随你喜欢地用许多嵌套设计表格,破碎的标签,以及毫无意义的元素来书写最混乱的理想页面,既便如此,它仍旧是一个可用的XHTML页面。相同的,你可以书写一个你从未见过的最纯粹、最干净、最语义化的页面,即使它仍然是用HTML 4.01写的。

XHTML比HTML更加简洁/精悍

不是这样。因为一个正确的XHTML页面要求所有属性值必须有引号,每个元素都必须有闭合标签,以及在页头部分必须有完整的标签属性体系,一个XHTML页面实际上结束后比一个同等的HTML页面更加的“臃肿”。例如在圣安妮·范·凯斯特仁 (Anne van Kesteren)的主页上(http://annevankesteren.nl)就是像这样开头的:
复制内容到剪贴板
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- It's valid, sure. -->
<title>Anne's Weblog</title>
紧接着这个题目的就是一些外链的样式表以及script文件,然后它就开始了整个页面——没有<html>标签,没有<head>标签,没有<body>标签,不论是起始或是闭合。做一个相同的XHTML页面需要所有的这些。按照web标准书写的XHTML相比于HTML在头部确实拥有更少的旧有样式、标签群,但是在网页作者的方法论中这是不同的,更胜于不同版本HTML的使用。

XHTML必须依照web标准

错误。(我希望)正像到目前为止我解释的这样,单独用XHTML书写是不够的。不管你是用HTML还是XHTML书写,最重要的部分是你能够写好。

所有关于MIME类型的争论到底是什么?

啊,MIME类型。我警告你,它是一种煽动性的东西,在你讨论它的时候它会给你造成许多的混乱,像“邪恶”“有害”一类的词持续围绕着它。然而,我尝试冷静地、敏感地在这节里概括这个问题,并且尽量避免手忙脚乱。在我继续之前,有两点你必须牢记在心:


  • 对于一般的网页作者(或是领导他们的人)来说,MIME类型的主题很少会,如果有的话,直接影响他们或是他们的网站访问者。
  • 虽然如此,它还是值得去了解的。


于是,我们开始吧。
尽管它们拥有共通的代码表,XHTML相比于HTML拥有一些优点,包括以下的这些:


  • XHTML有在你的页面中兼容其他基于XML技术的能力(例如MathML)。
  • 形态不完整的XHTML会很快被识别出,因为浏览器会拒绝展示页面而用一个错误来代替。
  • XHTML会向形态完整的(well-formed)[ 我必须指出,“形态完整”并非“可用(valid)”。例如,一个带有mymadeupattribute="true"属性的标签是形态完整的,但是并非可用的。]页面提供保证。


除非你用application/xhtml+xml的MIME类型传输XHTML,否则上述的几点都不是真的。如果你的网页服务器在传输网页时使用的是text/html的MIME类型(事实上所有的网页服务器都是这样),那么你就没有利用好所有的XHTML。
于是,我们开始吧。你可能会选择简单地配置你的服务器来选择正确的MIME类型以传输你的XHTML页面。然而,并非那么简单,有以下两个原因:


  • IE不会支持像那样传输的页面,而且它会尝试下载而非展示出来。
  • 你的页面可能再不会工作了。


第一个问题可以通过内容商议(content negotiation)[ 关于内容商议(content negotiation)的详细解释请参看盖咨·雷蒙(Gez Lemon)的《MIME类型与内容商议》。(http://juicystudio.com/article/content-negotiation.php)]来解决——也就是说,传输一种MIME类型向一类浏览器,而传输另一种MIME类型给IE浏览器。造成第二个问题的原因有一系列。一个不可用的XHTML页面现在完全不能被展示,同时会显示一段错误的信息。即使你的页面是可用的,但是那也不是你可能遇到的唯一问题:


  • 你可能用来对旧浏览器版本隐藏你的CSS以及script的注释语句(<!-- -->)有可能现在会被像注释一样逐字识别,这样,你的CSS以及script将会失效。
  • 用document.write()写的Script将不会工作。
  • 你的CSS将会根据最初的写法而被认为是不同的意思。


最微小的可用性错误会导致你的页面损坏或者出现异常,并且会让访问者看到明显的错误。很明显,这是一个你需要注意的问题,如果你使用了一个开放的注释系统(open comments system)或是CMS(内容管理系统content management system),那它将不会一直产生正确的架构。所有的这些都会因为一个未编码的符号(如&)而略过,从而导致你的页面整体失效。

所以,这是MIME类型最麻烦的部分。对于某些人来说并没有关系,但对于另外一些人来说,则麻烦大了。本质上来说,尽管你的XHTML页面必须用application/xhtml+xml的MIME类型来传输,但这么做可能会引起无法预料的并发状况,并且在以后用text/html的MIME类型传输也会成功,但请注意,你如果这么做的话,将无法完全体现出XHTML特征的优势所在。

尽管这个问题已经被指出,我个人的偏好仍旧是用XHTML书写而用text/html传输。这是有很多原因的,尤其是雇主和顾客更倾向于坚持营销的目的。我也偏爱这种结构,知道我必须闭合所有的标签以及把所有的属性都用引号引用起来。我也可以选择在HTML中这么做,但是拥有XHTML中的强迫性,我坚信能够帮助我构架得更加的良好。

在HTML和XHTML中做出抉择

那么,那个你会使用,HTML还是XHTML?这需要看情况而定。万维网联盟(W3C)相比于HTML更加推荐使用XHTML[ 请浏览《HTML与XHTML》一文(www.webstandards.org/learn/articles/askw3c/oct2003)],因为当XHTML2(附录A中)来临时将能使你转换你的页面更加方便。那么,如果这是你打算做的,现在请使用XHTML。如果你发现你更加重视用HTML4.0(不引用的属性,大写标签等)书写的老式的应用程序或者CMS,在模板中用一个XHTML的页面输出是没有意义的,那么,你应当使用HTML4.0。如果你需要节省带宽,使用HTML4.0。如果你需要使用XML,XHTML……。

最后,这个的判断完全是依照你自己的情况。但是请不要错误的认为,所有你需要做的都得使用XHTML来书写一个专业的,拥有良好结构的,并且富有意义的页面。

TOP


当前时区 GMT+8, 现在时间是 2008-11-20 23:56 京ICP备08003531号

Designed By 17DST
Baidu XML