Web的未来:XHTML2.0(1)
|
多年以来,HTML 只是在不断变大,却从未变小,因为新版本必须维护向后兼容性。这一情况将得以改变。XHTML 2.0 的第一个工作草案于 2002 年 8 月 5 日发布,一大新闻就是取消了向后兼容性;该语言终于得以继续发展。那么,作为一名开发人员您将得到什么回报呢?健壮的表单和事件表现如何呢?它们是研究不需要大量 JavaScript 的框架以及甚至层次结构菜单的更佳方法。 本文概述了 XHTML 2.0 中的新增功能以及将来可能会如何使用它。读者应该熟悉 HTML 和/或 XHTML 1.0。熟悉级联样式表(Cascading Style Sheet (CSS))是有帮助的,但不是必需的。
当万维网联盟(World Wide Web Consortium (W3C))于 2002 年 8 月 5 日发布 XHTML 2.0 的第一个工作草案时,最让人吃惊的是:与其先前的版本不同,它不是向后兼容的。对于先前的发行版,如从 HTML 4.01 转到 XHTML 1.0 以及后来从 XHTML 1.0 到 XTHML 1.1,变化都是添加一些内容;可以读取 XHTML 1.0(过渡的)文档的浏览器也可以理解 HTML 4.01 文档。而 XHTML 2.0 不是那样的。 如果您在两年前宣布我们今天将研究不带 img 标记或 bold 标记的 HTML 版本,那么大多数 Web 开发人员都会用怀疑的眼光看着您。然而,现在就是这样。除了彻底替换表单和框架外,XHTML 2.0 还除去了 b、i 和 img 标记(以及 big、small 和 tt),甚至不赞成使用 br,以准备从将来的发行版中除去它。但这是为什么呢? 原因在于大多数标记都是表示性的。它们的唯一目的就是给予浏览器指令,规定有关其内容应该如何显示,但却完全未提供有关其内容是什么的信息。例如,请考虑下面两个句子: Presentational elements are, <i>for the most part</i>, <b>gone</b>.
Presentational elements are, <em>for the most part</em>, <strong>gone</strong>.
但这并不意味着只要您想使某些内容变成粗体或斜体,就应该将它们硬塞进这两个标记中。相反,除去表示性元素的整个目的是设法完成 CSS 的发明者的初衷,即应该根据内容所表示的东西来标记内容,而样式表应该用于美化内容。例如,清单 1 使用类别(class)来指出内容类型。 清单 1. 使用类别指定内容类型 <html> font-style: italic } </style> </head> <body> <h1>Notice</h1> <p>Employees should take note of the following important dates:</p> <ul> <li class="duedate">8/28/2002 (Progress reports due)</li> <li class="holiday">9/1/2002 (Labor Day)</li> <li class="duedate">10/28/2002 (Final reports due)</li> </ul> </body> </html>
图 1. 类别可以确定显示哪一类内容,样式表可以对它进行适当的格式化。
<p> public class HelloWorld {<br /> public static void main (String[] args){<br /> System.out.println("Hello world!");<br /> }<br /> } </p>
<p> <line>public class HelloWorld {</line> <line>public static void main (String[] args){ </line> <line>System.out.println("Hello world!"); </line> <line>}</line> <line>}</line> </p>
为什么所有这些都很重要呢?因为 Web 不仅正日益成为人与人之间通信的场所,而且还日益成为软件应用程序(如服务器和搜索引擎索引器)之间进行通信的场所。而且,每个人(或者说几乎每个人)都使用相同浏览器的时代已经一去不复返了。开发人员正不断为不同设备(如 PDA 和移动电话)重新设计内容。语音触发的(voice-activated)系统已经离我们不远了。内容的结构意义正变得几乎与内容本身一样重要。 节 因此,XHTML 2.0 添加了节(section)和标题(heading)。HTML 一直都包含编号的标题 h1 到 h6,直到 2002 年 8 月 5 日的工作草案,还未将其撤消,但这只是一个时间问题。而 XHTML 2.0 使用通用标题和节。例如,可以嵌套节,从而赋予标题含义。以前用编号标题呈现的文档(清单 2): 清单 2. 文档中的编号标题 <html> <head><title>Adding sections</title></head>
清单 3. 通用标题和节 <html> <head><title>Adding sections</title></head> <body> <section> <h>The Web"s future: XHTML 2.0</h> <p>by Nicholas Chase</p> <section> <h>Good-bye backward compatibility, hello structure</h> <p>Why backward compatibility is over.</p> <section> <h>Presentation vs. Structure</h> <p>Using style sheets rather than presentational elements.</p> </section> <section> <h>Lines</h> <p>Line breaks are deprecated.</p> </section> </section> <section> <h>Sections</h> <p>Creating more reasonable sections.</p> </section> <section> <h>Navigation lists and menus</h> <p>Hierarchical menus.</p> </section> <section> <h>Links, links, everywhere</h> <p>Adding links.</p> </section> </section> </body> </html>
导航列表和菜单 增加了一个会让 Web 开发人员大大受益的结构,那就是导航列表。由 nl 标记指定的导航列表的工作原理与其“表亲”有序列表(ol)和无序列表(ul)非常相似,但有一点不一样:导航列表的项仅在列表激活时才出现。因此,导航列表与层次结构的弹出菜单十分相似,这种弹出菜单很受欢迎,因为它们提供了许多导航信息,而且不会占据太多的屏幕空间。例如,肥皂剧站点可能有以下菜单(清单 4): 清单 4. 使用导航列表 <nl> <name>Character Options</name> <li href="stay.html">Stay</li> <nl> <name>Leave</name> <li href="newjob.html">Job transfer</li> <li href="divorce.html">Divorce</li> <li href="fataldisease.html">Fatal disease</li> </nl> <li href="backburner.html">Back Burner</li> </nl>
链接,链接无处不在 您可能已经注意到:即使打算将前一个示例作为菜单,但它没有锚(a)标记。而 href 属性已经被正确放在了 li 元素上。这不是导航列表的特性,而是 XHTML 2.0 的新特性。与超文本相关的属性(如 href、target 和 accesskey)现在是公共属性集合(Common Attribute Collection)的一部分,它包括核心属性(class、id 和 title)、国际化属性(xml:lang,它替换了 XHTML 1.1 中的 lang)和事件属性,事件属性来自 XML Events 建议书,正如您将在下面看到的。 这意味只要将 href 属性添加到任何元素,就可以将它转换成链接,而不一定要用锚标记包围单个元素。 这是否表示经过四年的努力,XLink 已经被 XHTML 2.0 采用了吗?总而言之,没有。事实上,XLink 和 XHTML 2.0 中规定的链接之间的差异是那些正从事各自建议书的开发人员之间争论的根源,所以在这个最初的公开工作草案和最后的建议书之间可能会做些更改。同时,可以组合使用该功能、导航列表、link 元素,以及资源描述框架(Resource Description Framework (RDF))来复制 XLink 的大多数功能。 XForms 是一个与 XML 相关的建议书,并确实已经成为 XHTML 2.0 的一部分 源代码网供稿. |
