为什么需要XHTML?HTML还不够好吗? HTML也许是全球最成功的文档标记语言(markup language)。不过,在XML被提出之后,有一个两天的研讨会讨论了是否需要一个基于XML的新版HTML。该研讨会的意见是明确的:即需要一个基于XML的HTML,这样其他XML语言可以包含XHTML片断,而XHTML文档也可以包含其他标记语言的片断。我们还能利用重复设计(redesign)以去除HTML中某些较不整齐的部分并添加一些新需要的功能(比如更好的表单)。
[编辑]XHTML比HTML有哪些优点? 如果你的文档仅是纯XHTML 1.0的(不包含其他标记语言),那么你还不能体会到较多的不同。但是,随着越来越多XML工具(比如用于文档转换的XSLT)的出现,你将能体会到使用XHTML的优点。比如,XForms使你可以用便捷的方式来编辑XHTML文档(或其他类型的XML文档)。语义Web应用也将得以从XHTML文档获利。
如果你的文档不仅是XHTML 1.0,比如还包含了MathML、SMIL或SVG,那么优点将是立竿见影的:用HTML你是不可能完成这些事的。
[编辑]我可以把XML声明放到已有的HTML文档顶部吗?我可以把HTML 4.01和XHTML文档混杂在一起吗? 不可以。HTML并不是基于XML格式的。你必须对HTML文档作必要的修改才能使之成为正确的XML文档。
[编辑]HTML文档转换到XHTML的最容易的方法是什么? 你可以利用HTML Tidy (http://tidy.sourceforge.net/)将HTML文档转换为一个XHTML文档。另外,Amaya (http://www.w3.org/Amaya/)也是一个可以把HTML文档保存为XHTML的浏览器和编辑器。
[编辑]为什么浏览器对XML的处理如此严格,而对HTML则较容易接受? 这是当然的。HTML浏览器接受任何输入(正确的或不正确的),并试图使之得以正常显示。这种错误纠正使得浏览器程序的编写变得很难,尤其是在所有浏览器都被期望具有相同的显示结果时。这也意味着大量的HTML文档是不正确的,因为它们可以在浏览器中正常显示,所以文档作者未能注意到错误的存在。这使得新的用户代理(user agents)[译注//浏览器是一种用户代理]的编写变为惊人的困难,因为声称符合HTML的文档通常存在着很多错误。
[编辑]我的HTML文档在我的浏览器中显示正常,为什么我还要关心它是不是正确的HTML? 所有的浏览器都知道应如何去处理正确的HTML,但是对于不正确的HTML文档,浏览器必须要去修正它。而各种浏览器的修复方式是不统一的,这就造成了差异。于是你的文档在不同的浏览器中将会呈现出不同的显示结果和行为方式。由于目前的浏览器种类繁多,而且还在不断增多(除PC机的浏览器以外,还有PDA、手机、电视、打印机甚至电冰箱上的浏览器),因此不可能在每一种浏览器上对你的文档进行测试。如果你使用的是不正确的HTML,并且不能在某种浏览器上正常打开它的话,这将是你的过错;如果你使用的是正确的HTML,而不能正常打开的话,那就是浏览器的bug了。
[编辑]我在哪里可以验证文档所使用的标记是否正确? W3C提供了一个对文档进行验证的服务,该服务位于http://validator.w3.org/ (http://validator.w3.org/)。Amaya (http://www.w3.org/Amaya/)是一个浏览器和编辑器,也可用它来确保标记的正确使用。
[编辑]为什么本文各处都用“用户代理(user agent)”这个词,而不用“浏览器(browser)”? 尽管浏览器确实是HTML和XHTML的重要用户,但是也存在其他读取HTML和XHTML的程序和系统。比如,搜索引擎也读取HTML和XHTML,但是它并不是浏览器。通过使用“用户代理(user agent)”这个词,我们试图提醒人们这里存在着区别。 比如,当你使用Google搜索引擎的时候,你也许会经常在某些搜索结果的下方看到一些诸如“本Web页面使用了框架,而你的浏览器不支持框架。”之类的文字,这无疑将使一些用户不敢恭维并放弃点击那个链接。因为那些网站的作者没有意识到不仅仅是浏览器会读它的网页[译注//Google的搜索结果是由spider读取的,而Google的spider作为一种用户代理是不支持框架的],他们应在<noframes>中写入更恰当的文字,以至于不会显得如此尴尬。
[编辑]为什么在XHTML里我必须使用命名空间? 在HTML时代的早期,不同的组织和公司随意地在HTML中添加新的元素和属性,这成为导致由不可互操作的各种HTML版本造成混乱的潜在因素。XML(其中的X代表Extensible,即可扩展的)允许人们使用来自不同语言的元素和属性,但是为了使浏览器或其他用户代理可以知道哪个元素归属哪个语言,你必须对此加以说明。而命名空间声明(namespace declarations)就是用于这一目的的。
[编辑]为什么允许以text/html发送XHTML 1.0文档? XHTML是一种XML格式。这表明,严格地说应该用一个XML相关的媒体类型(meida type)(如application/xhtml+xml、application/xml或text/xml)来发送XHTML。不过XHTML 1.0是经过精心设计的,XHTML文档只要在制作时略加注意便可在传统的HTML用户代理上工作。只需你遵守一些简单的规则,你就可以使许多XHTML 1.0文档能够在传统的浏览器上工作。可是,传统的浏览器仅能理解text/html媒体类型,于是你必须使用text/html来发送XHTML 1.0文档。不过需要注意的是,以text/html发送XHTML文档意味着那些浏览器将把它们作为HTML文档,而不是作为XHTML文档来处理。
2010-01-24
2007-09-18
2007-08-30
2007-07-06
2007-06-19
2007-04-09
2007-04-04