新标准的熟悉和入门 内容:还在用HTML编写文档?如果是的话,就不符合当前标准了。2000年1月26日,XHTML1.0成为万维网联盟(W3C)的建议。根据W3C,HTML不再是Web标记标准。取而代之,XHTML1.0已替代旧宠儿,标志着通信技术令人兴奋的新时代已经来临。
那么,XHTML1.0到底是什么?对Web开发人员来说,它意味着什么?下面从W3C的描述讲起:XHTML1.0是XML应用程序的HTML再形成。这意味着,如果用XHTML1.0编制文档,则将XML固有的规则和概念应用到Web标记。很自然,还有个摇摆的问题:现在可以用XHTML1.0标记Web文档吗?答案很明确:“是的”。所要做的全部只是学会正确组织文档结构,选择所需的正确文档类型定义(DTD),以及学会几种管理代码开发的新方法。
但是,XHTML1.0怎么会如此轻易上手呢?在编写文档时,您将看到,它使用您所熟悉的HTML作为其词汇。在方法上有较小的变化,而在思路上有主要的不同,XHTML1.0允许Web作者依据标准进行编码,并开始改变有关未来发展和更改的
观点。
为什么需要另一种标记语言?
HTML使用起来相当好。确实,我们一直受到提出确实管用的跨浏览器、跨平台解决方案的挑战。但是,在Web从90年代的早期形式发展到今天我们所知的充满活力的活动Web的过程中,也意味着在前进途中消耗、破坏甚至制造了新的HTML规则。
学过HTML4.0准则的开发人员都知道,在HTML4.0标准出现时,已经确定了改进HTML准则的最终目标。HTML4.0的一些主要考虑包括:
通过将基本格式化与样式分离,来整理文档反对使用随心所欲或有问题的元素
要求声明文档类型(并希望在声明中,作者遵循HTML4.0的三个DTD中的规则)
这些原则都在XHTML1.0中存在,但是它们与XML中的概念组合在一起,这些概念帮助改进标记超出只加强其基本语法的作用。XHTML1.0的目标很多,但是,包括以下几个:
提供Web标记中可扩展性的基础
通过过去、现在和将来的浏览器,提供相同或更好的互操作性
通过即将来临的XHTML版本、其它XML应用和刚刚出现的技术(如无线和新型设备开发),使作者为不断发展的机遇作好准备。采用XHTML1.0最有说服力的理由恐怕是:开发人员(特别是通过HTML自学、或依靠可视设计工具来实现其目标的开发人员)可以通过学习该标准,来轻易地移至其它XML应用。然后,他们就可以看到XML和可扩展性的力量。因为过程相似:即HTML词汇加上一些新的结构和语法方法,所以,XHTML1.0使XML及其应用的领域不再令人畏惧。
通过使用熟悉的语言和一些新的概念,很容易转入不太熟悉的领域。例如,XHTML1.0的知识可以简化转移到即将出现的XHTML版本以及无线和其它应用的相关XML技术的过程(如WML(无线标记语言)、SMIL(同步多媒体语言)和SVG(可伸缩矢量图形))。
探询根源
探询XHTML根源有助于理解XHTML的基本原理及指引它的规则。
XML和HTML的根源相同,都是SGML,即标准通用标记语言(StandardizedGeneralMarkupLanguage)。有一点很重要:SGML本身不是一门语言。它是人们所知的元语言-- 即包含开发其它语言所依据规则的语言。
XML与其根源SGML一样,也是元语言。正如这样,其规则用于创建XML应用。而XHTML是将另一门SGML语言,HTML,用作其词汇的XML应用。
如果关系看起来有些复杂,那是因为它确实有些复杂。SGML首先产生HTML,然后是XML。当觉察到HTML的担心和限制时,XML规则就很明显地可以使HTML成长为帮助开发人员脱离这些限制的标记语言。
首先,需求
为了使XHTML1.0文档符合其元语言(XML),必须考虑几个需求和规则。如下所示:
建议、但不要求使用XML声明将XHTML1.0文档声明成XML文档。
要求XHTML1.0文档包含一个DOCTYPE,指明这是XHTML1.0文档,并指出该文档所用的DTD。
XHTML1.0文档有一个根元素<html>。该HTML元素的开始标记应该包含XML名称空间xmlns和该名称空间的合适值。
文档的语法和结构必须符合XHTML语法规则。
实现该目标的第一步是正确组织XHTML1.0文档的结构。将从添加正确的声明和文档信息开始。
文档声明、类型和名称空间
XHTML1.0文档可以包含几个结构元素,以便被认为是正确的:一个XML声明、一个DOCTYPE声明,并包括名称空间。
XML声明允许作者将其文档声明成XML,并包括文档所用的编码。
<?xmlversion="1.0"encoding="UTF-8"?>
如前面提到的,建议使用此声明,但这不是必需的。不强制使用的部分原因是:如果使用,则某些浏览器(包括IE4.5forMac和Netscape4.0forWindows)将显示不正确的XHTML页面。因此,大多数对互操作性感兴趣的XHTML1.0作者不使用它。但是,因为编码信息在很多情况下很重要(特别在使用国际化文档时),所以,如果不使用XML声明,则鼓励在meta标记中添加编码信息(在后面的清单2中显示)。
在XML文档声明的下面-如果选择不使用它,则位于文档顶部-必须放置DOCTYPE声明。DOCTYPE允许作者声明所用的文档类型。在本例中,文档类型是XHTML1.0,该文档要符合的特定XHTML1.0DTD为strict。
XHTML1.0中只有三种DTD。它们来自HTML4.0,其内容如下:
Strict:Strict遵循最严格的XHTML规则。在以该类型编写的文档中,只允许出现当前元素、属性和字符实体。不允许出现HTML4.0所反对的元素(如font或center)。也不允许过时的元素。Strict声明如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1- strict.dtd">
Transitional:transitionalXHTML1.0文档更宽容一些,它允许作者使用所反对的和当前的方法。可以在transitional文档中使用font或center,或任何其它所反对的标记,只要文档本身标记正确即可。不应该使用过时的元素。如果在用XHTML1.0编写transitional文档,将包括以下声明:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
Frameset:framesetDTD只为frameset文档保留。符合该DTD的frameset文档可以使用strict或transitional标记。要以XHTML1.0创建frameset文档,在文档顶部包括这个DOCTYPE:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
确定了是否使用XML声明,并且添加了定义要遵循的标记规则的DOCTYPE声明之后,需要将HTML根添加到文档,并相应设置XHTML名称空间:
<htmlxmlns="http://www.w3.org/1999/xhtml">
此时,要添加一些必需的结构元素,如head、title和body。清单1显示包括XML声明的XHTML1.0transitional文档外壳。在清单2中,将看到不带XML声明的transitional文档,但是,有一个meta标记来声明所用字符集。
清单1:带有XML声明的TransitionalDTD格式的XHTML1.0文档
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>TransitionalDocumentwithXMLDeclaration</title>
</head>
<body>
</body>
</html>
在清单2中,将看到不带XML声明的transitional文档,但是,有一个meta标记来声明所用字符集。
清单2:不带XML声明的TransitionalDTD格式的XHTML1.0文档
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>TransitionalDocumentwithoutXMLDeclaration</title>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/>
</head>
<body>
</body>
</html>
语法事项
一旦XHTML文档包含必需的声明和结构信息,就可以检查由XML在Web标记上的影响而导致的语法更改。这些语法更改包括是否区分大小写、正确格式的标记元素、空和非空元素,以及引号的使用。
大小写
如您所知,HTML不区分大小写。这意味着,HTML元素和属性名称可以是大写、小写或大小写混合的。因此,可以写成:
<bodybackground="my.gif">
或
<BODYBACKGROUND="my.gif">
甚至
<BoDybackground="my.gif">
所有这些示例的功能相同。另一方面,XML却是区分大小写的。因此,XHTML要求有特定的大小写。在XHTML1.0中,所有元素和属性名称必须是小写的:
<bodybackground="my.gif">
除元素和属性名称之外,其它不必遵循XHTML1.0。请注意,属性值(例如"my.gif")可以是大小写混合的。如果文件所在服务器的文件系统是区分大小写的,或者在应用中使用大小写混合的代码(例如那些用Microsoft的活动服务器页面 (ASP)、ASP+或ColdFusion编写的代码),则尤其如此。
良好的格式
虽然很多HTML浏览器很宽容,但是,很多HTML工具不符合标准。就这样,某些作者养成了坏习惯,如不正确的标记嵌套。下例在很多浏览器中可以使用:
<b><i>WelcometoMySite.Com</b></i>
在宽容的浏览器中,它将显示粗体和斜体。但是,如果拿起笔来,从粗体的开始标记到其结束标记画一个弧,然后,再从斜体的开始标记到其结束标记画一个弧,将看到,两条弧线相交。这展示了不正确的标记嵌套,我们认为,这是坏格式。
在XHTML1.0中,不接受这样的坏格式标记。必须在“每个元素必须正确嵌套”方面符合良好格式的概念。前面示例用XHTML1.0表示为:
<b><i>WelcometoMySite.Com</i></b>
现在,再画弧,将看到,弧线不再相交。这些标记以正确顺序放置,并被认为是正确的格式。
非空和空元素
非空元素包含一个元素和一些内容:
<p>Thisisthecontentwithinanon-emptyelement.</p>
相反,空元素没有内容,只有元素及其属性,如<hr>和<img>。
XML规则指出,空元素和非空元素必须完全关闭。在HTML中,可以看到非空元素通常有一些可选的结束标记。上段可以这样写:
<p>Thisisthecontentwithinanon-emptyelement.
在HTML中,认为这是正确的。XHTML1.0要求,非空元素要完全关闭。另一个例子是<li>(列表项)元素。在HTML中,可以写成:
<li>Thefirstiteminmylist.
<li>Theseconditeminmylist.
或
<li>Thefirstiteminmylist.</li>
<li>Theseconditeminmylist.</li>
在XHTML1.0中,只允许后一种方法。
在XML中,用斜杠终止空元素。因此,变成<br/>。由于某些习惯于解释HTML的浏览器在使用该方法时有问题,所以,引入了替代方法,即在斜杠之前添加一个空格:<br/>。
这是一个图像元素的XHTML示例,它是空元素:
<imgsrc="my.gif"height="55"width="25"border="0"alt="pictureofme"/>
其它要注意的空元素是meta和link。
引号
HTML中的引号是任意的,即,可以在属性值前后使用引号,也可以不使用,并且不会导致太多麻烦。没有规则说:不用引号将值括起为非法。下例在HTML中完全可接受:
<tableborder=0width="90%"cellpadding=10cellspacing="10">
尽管有些属性值用引号括起,有些没有,但浏览器将正确显示该标记。但是,如果要遵循XHTML1.0,则必须将所有属性值用引号括起。
<tableborder="0"width="90"cellpadding="10"cellspacing="10">
如您可见,这些更改都不大。还有点儿烦,是的,但是,一旦开始使用这种方法,将会发现,这种标记要方便得多。一致
性是使XHTML1.0如此吸引人的原因之一--它提供了构建未来结构的坚实基础。
XHTML的未来
既然XHTML如此易用,为什么这么长时间才被采用呢?这是很多关心标准的人在问的问题。该问题的部分原因可能是宣传得不够--没有太多人了解XHTML1.0。甚至即使听说过,也可能没意识到:现在使用它有多简单。
另一个原因是:目前用于HTML开发的软件工具(如AdobeGoLive、MacromediaDreamweaver、MicrosoftFrontPage等)不支持XTHML,很多喜爱这些工具或必须在工作中使用这些工具的Web作者对此感到担心。
但是,尽管有这些困难,XHTML1.0正在前进。事实上,下一版本,XHTML1.1,已经相当完善,并包含Web标记作者某些新的、不同的概念。模块化(将语言分成彼此独立的模块)是XHTML1.1的主要部分。而且,更多类似于XML的优势在发挥作用。例如,为XHTML文档编写自己的DTD或者使用模式(schema)的能力将带来真正的可扩展性。
XHTML1.0是当今的Web标记标准。如果还没使用它,至少应该好好尝试一下。在与XML相关的技术领域发生的进展(特别是无线领域)强有力而令人信服地表明:标记语言的作者越灵活,其前景就越被看好。XHTML1.0是开阔您眼界的极佳方法。够熟悉,就有意义;够强大,可以帮助您创建适用于今天、更为明天激动人心的机遇作好准备的稳定、可互操作的Web站点。
参考资料
WorldWideWebConsortiumXHTMLRecommendation。这是W3C站点上详细解释XHTML1.0的标准文档
XHTML1.1。正在讨论中,XHTML的这个下一版本涉及到XHTML1.0的模块化方面。
可以在这里找到ChuckMusciano所著的WebReviewseriesonXHTML1.0。
Mozquito.Com是MozquitoTechnologies的Web站点,他专为XHTML制作软件产品。还可以在他们的站点找到很好的
教程和大量资源链接。
关于作者
作为作家、讲师和设计人员,MollyE.Holzschlag将其观点和热情带入书籍、杂志和Web站点。被Webgrrls评为
Web上最有影响的25位女性之一,Molly在联机世界已工作10年之久。她写了15本关于HTML和Web设计与开发主
题方面的书籍,包括即将出版的Que的SpecialEditionUsingXHTML1.0、最畅销的SpecialEditionUsingHTML
4.0和得到国际上普遍赞誉的WebbyDesign。她的流行栏目,IntegratedDesign,每月出现在WebTechniques杂志。
她还是WebReview的执行编辑,也是AdobeMagazine、Builder.Com、DesignShops.com、DigitalChicago、Digital NewYork、IBMdeveloperWorks、MacWorld、MSDN、PlanetIT的作家,还是其它开发人员资源的成员之一。可以造访她的Web站点http://www.molly.com/。