可扩展超文本标记语言

更新时间:2023-12-24 19:40

可扩展超文本标记语言(eXtensible HyperText Markup Language,XHTML)是一种新兴的网页设计和制作语言。XHTML是在HTML基础上发展起来的,同时吸取了可扩展 标记语言(extensible Markup Language,XML)的语法严谨的优点。因此,XHTML比 HTML具加更加严谨的语法,能够为众多品牌的Web浏览器研发提供规范的技术标准, XHTML的可扩展性和灵活性将适应未来网络应用的更多需求。

发展历史

XHTML最早叫做“HTML in XML”,是一种基于XML的超文本标记语言,也就是说,将以前用 SGML定义的HTML改为用XML重新定义。从这个意义上讲,XHTML实际上是XML的一种应用。表面上看,在XHTML中,其标记仍旧延用以往的HTML 的标记,各元素和属性的名称和用法也几乎不变,只不过由于改为用XML定义,就必须严格按照XML语言规范来处理了。提起XHTML,就不能不先来看一下 XHTML的发展历史。

XHTML的前身是大名鼎鼎的HTML,HTML作为在Internet/Intranet网上进行数据浏览和数据交换的一种先进的文件格式规范,以浏览器为依托凭借着其丰富而强大的功能打破了传统的数据浏览方式,给人以耳目一新的感觉,也极大地推动了Internet的发展。但是,随着HTML应用的不断深入,其不足之处也逐渐暴露出来。首先,实际应用中的HTML相当不规范。虽然W3C早己制定出HTML的规范,但是出于商业动机.当今两大Web浏览器软件制作厂商Microsoft 和 Netscape为了抢占日益扩大的浏览器市场,纷纷在HTML中加入自己定义的非规范的标记,并在自己的浏览器中提供相应的特殊支持,旨在占领更大的浏览器市场份额,以达到左右HTML标准的制定并最终将竞争对手打垮的目的。这种不良竞争的结果,造成HTML标记的过度膨胀,大量与标准HTML不一致的标记充斥于Internet的大小角落,而且某些HTML标识符只能在Netscape Navigator上才能执 行,而另一些只在Internet Explorer上才是有效的。这 种情况给网页设计人员带来很大的麻烦。其次,随着技术的飞速发展,新的Web浏览工具不断被开发出来, 从小巧的掌上电脑到功能特异的能上网的手机再到最 近被炒得沸沸扬扬的数字机顶盒,网上浏览再也不必局限于桌上电脑了。据权威人士预测,到2002年,大约 75%的网页将会通过非桌上型电脑来浏览。但是,我们不禁又问,到底现在的HTML标准是不是真得适合在各种非桌上型电脑中进行浏览呢?很不幸,回答是否定的,现在的HTML不能解决这个难题。另外,HTML只能利用现有的有限标记.而且大多数标记都没有实际的含义,这使得它越来越不适应人们不断增加的需求。在这种情况下,在各大知名厂商的压力下,W3C组织于1998年底成立工作组,专门讨论XHTML标准的制定。好在在此之前,W3C已正式推出XML1.0规范,这无疑为XHTML规范的制定奠定了强大的基础。经过不断的讨论,该工作组于1998年12月5日提出第一个草案,并在随后次年的2月24日、3月4日、5月5日分别公布了阶段性草案。1999年8月24日,第一个建议标准正式推出。不过,还应指出的是,这并不意味着就一定能成为正式标准,事实上, XHMTL1.0的这份标准目前正处于激烈的讨论中,争议的焦点之一是名称空间(namespace)

形成背景

一方面,缺乏语法规范性的HTML文档。实际上,万维网中的许多页面都是规范性很差、语法很不严谨的HTML文档,但仍然可以用Web浏览器打开。

另一方面,现今的软件市场上存在着不同厂商提供的Web浏览器。国外流行的Web 浏览器有 Microsoft Internet Explorer、Mozil丨a Firefox 和 Google Chrome 等,国内有搜狗、 腾讯 Tencent Traveler、遨游Maxthon、世界之窗Theworld和360安全浏览器等。如果设计和制作网页的语言缺乏必要的规范、语法不严谨,运行在计算机上的不同Web浏览器将难以支持万维网中数以亿计的网页。反之.如果使用统一规范的网页设计和制作语言,使得 HTML文档都具有规范和良好的结构,Web浏览器与网页之间的适配性将得到大大增强。

XHTML的面世

为了规范网页设计和制作语言,W3C于2000年推出了XHTML。

目前,较流行的XHTML 1.0版本有以下三种。

(1)XHTML1.0 Strict(严格版)。严格版是根据HTML 4.01 Strict改编的。与 HTML 4.01 Strict —样,在XHTML 1.0 Strict中不能使用表现性元素或属性,例如 center、font、s、strike 和 u 等元素以及 align background 和 bgcolor 等属性。

(2)XHTML 1.0 Transitional(过渡版)。过渡版是根据HTML 4.01 Transitional改编的.与HTML 4.01 Transitional—样,可以使用一些在Strict版本中禁用的表现性元素或属性。

(3)XHTML 1.0 Frameset(框架版)。框架版是根据HTML 4.01 Frameset改编的.允许在网页中定义框架。

在上述三种XHTML 1.0版本中,XHTML 1.0 Transitional规定了XHTML的基本语法。XHTML 1.0 Strict不仅遵循XHTML的基本语法规定,而且不允许使用表现性元素或属性.在XHTML 1.0 Transitional和 Strict 的基础上,XHTML 1.0 Frameset 允许在网页中定义框架。

总之.XHTML是一种增强型的HTML,是语法更严谨、元素更纯净的HTML版本. XHTML有助于编写良构(Well-structured)的HTML文档。这些HTML文档可以很好地工作于IE、Firefox和Chrome等各种品牌的Web浏览器,并且能够向后兼容。此外,XHTML还具有良好的可扩展性和灵活性,不仅支持台式计笕机和便携式电脑而且支持iPad、iPhone等手持移动通信设备.能够适应未来网络应用的更多需求。

语法规定

HTML的语法比较松散.网页设计和制作者使用起来比较方便。但对Web浏览器来说.网页设计语言的语法越松散.处理起来却越困难。因此,W3C在制定XHTML规范时,要求编写HTML文档时必须遵循更加严格和规范的语法。

(1)必须关闭打开的标签。

在HTML中,允许某某些非空元素只有开始标签,而可以没有结束标签。例如,li元素的开始标签

  • 可以不用结朿标签
  • 来关闭.但这在XHTML中是不允许的。XHTML规定,必须关闭打开的标签,换言之,开始标签必须有相应的结束标签。

    对于br和img等空元素(即没有结束标签的元素要在开始标签中的元素名后面使 用“/”来关闭。例如,
    必须写为
    必须写为

    (2)元素名和属性名都必须小写。

    在HTML中,标签中的元素名和属性名可以小写,也可以大写。但与HTML不同, XHTML是大小写敏感的(Case Sensitive),元素名和域性名必须小写,并且不允许大小写夹杂。例如.在HTML中允许、,但在XHTML只允许<html〉、<title>。</p></div><p class="text">(3)元素以及标签之间都必须正确嵌套。</p></div><p class="text">XHTML规定,如果在关闭一个标签之前又打开另个新标签,则必须首先关闭新标签,然后才能关闭前一个标签。换言之,关闭后打开的标签之后,才能关闭先打开的标签。</p></div><p class="text">例如.在 XHTML中,不允许<p>Here is an emphasized<em>keyword. </p> </em>,只允许 <p>Here is an emphasized <em>keyword. </em></p>。这样,p 元素才能正确嵌套em元素。</p></div><p class="text">正确嵌套元素以及标签,外以形成良构的HTML文档。</p></div><p class="text"></p></div><p class="text">在HTML中,当属性值是数字时.可以不用引号;但是在XHTML中,所有的属性值 (包括数字)必须用双引号括起来。</p></div><p class="text"></p></div><p class="text">(5)不能在注释内容中使用“--”。</p></div><p class="text">“--”只能出现在XHTML注释的开头和结朿,而在注释内容中不能再使用。例如,在XHTML中,下面的代码是无效的:</p></div><p class="text"><!--这里是注释----------这里是注释--></p></div><p class="text">(6)图像标签必须有说明文字。</p></div><p class="text">在XHTML中.每个图像标签都必须使用alt属性添加说明文字。例如,在XHTML 中,以下代码是有效的:</p></div><p class="text"></p></div><p class="text">注意:为了兼容Firefox渕览器和IE浏览器,对于图像标签,尽量采用alt和title双标签!</p></div><p class="text">(7) 用id属性替代name属性。</p></div><p class="text"></p></div><p class="text"></p></div><p class="text">(8)必须给每个属性赋一个值.且不能省略属性值。</p></div><p class="text">在XHTML中,每个属性都必须有一个值,没有值的就重复本身。例如:</p></div><p class="text"></p></div><p class="text">必须修改为:</p></div><p class="text"></p></div><p class="text">遵循上述XHTML语法规定的HTML文档称为良构的HTML文档。设计和制作网页时如果遵循上述XHTML语法规定,HTML文档就能够被大部分常见的Web浏览器正确并快速地编译。在以上语法规定中,有的看上去比较奇怪,但这一切都是为了使网页设计语言有一个统一和唯一的标准,以便使用各种Web浏览器都能正常地打开HTML文档并流畅地显示网页。</p></div><p class="text">由此可见,从HTML过渡到XHTML,最大的变化在于HTML文档必须是良构的。</p></div><p class="text">此外,在Strict类型的XHTML文档主体,还必须遵循以下语法规范。</p></div><p class="text">(1)文本内容不能直接出现在主体中。</p></div><p class="text">例如,以下代码的语法是不规范的:</p></div><p class="text">< body > Hello, World! </body></p></div><p class="text">因为文本内容“Hello, World!”直接出现在body元素中。</p></div><p class="text">在Strict类型的XHTML文档主体,文本内容必须出现在p、ul、h1、h2、h3、h4、h5或h6等块级元素内.或者出现在这些块级元素的子元素内。</p></div><p class="text">按照本条语法规则.以下代码的语法则是规范的:</p></div><p class="text">< body><p> Hello, World! </p></body></p></div><p class="text">或者</p></div><p class="text">< body >< p >< em > Hello, World! </em ></p ></body ></p></div><p class="text">(2>行内元素必须嵌套在块级元素中, 例如,以下代码的语法是不规范的:</p></div><p class="text">< body ><em> Hello, World! </em></body></p></div><p class="text">因为行内元素em直接出现在body元素中。</p></div><p class="text">在Strict类型的XHTML文件中,a、em、img、strong等行内元素必须嵌套在p、h1、h2、 h3、h4、h5或h6等块级元素内,而不能直接出现在body元素内。</p></div><p class="text">按照本条语法规则,以下代码的语法则是规范的:</p></div><p class="text">< body>< p>< em> Hello,World!</em></p></body></p></div><p class="text">或者</p></div><p class="text">< body>< p>< strong> Hello, World!</strong></p></body></p></div><p class="text">或者</p></div><p class="text"></p></div><div class="para-title2" id="paragraph_10">XHTML文档的基本结构</div><div class="para-container scroll_catalog fold" id="paraContainer1"><p class="text"></p></div><p class="text">使用XHTML设计和制作网页,其中的代码同样保存在HTML文档中,即文件的扩展名仍然是htm或html。但由于遵循更加规范的语法规定,特将使用XHTML编写的HTML文档称为XHTML文档。</p></div><p class="text">使用XHTML设计和制作网页时,XHTML文档必须具有一定的基本结构。</p></div><p class="text">XHTML文档的基本结构包括以下几部分:</p></div><p class="text">(1)首先必须使用<! DOCTYPE...>进行文件类型定义(Document Type Definition, DTD),以声明当前XHTML文档所遵循的版本。该XHTML文档中的DTD声明,XHTML文档遵循XHTML 1.0 Transitional的规范及语法规定。如果需要声明XHTML 文档遵循XHTML 1.0 Strict的规范及语法规定,在DTD部分则需使用如下代码:</p></div><p class="text"></p></div><p class="text">注意:DTD并非XHTML文档中的元素,换言之,<! DOCTYPE->并不是一个标签。</p></div><p class="text">(2)必须使用唯一的<a href="/zqxb/html元素/5983313">html元素</a>作为XHTML文档的根元素,并且其他所冇元素及标签都必须正确嵌套在<html>和标签对之间。</p></div><p class="text">(3)在XHTML文忾中,必须将html元素的xmlns属性值设置为“httP://www. w3. org/1999/xhtml”,以指定整个文档所使用的命名空间(Namespace).</p></div><p class="text">(4)在XHTML文档头部使用meta元素将编码方式设置为中文简体,具体使用如下 代码:</p></div><p class="text"></p></div><p class="text">(5)html元素中必须包含一个head元素和一个body元素,并且head元素中必须包含 —个title元素。</p></div><div class="para-title2" id="paragraph_10">XHTML的优点</div><div class="para-container scroll_catalog fold" id="paraContainer1"><p class="text"></p></div><p class="text">XHTML之所以能成为建议标准,就是因为它具有一系列优点:</p></div><div class="para-title2" id="paragraph_10">可伸缩性</div><div class="para-container scroll_catalog fold" id="paraContainer1"><p class="text"></p></div><p class="text">XHTML可以根据用户的需要和浏览器的处理能力选用合适的DTD,单是从这一点来看,就充分体现了一种时下比较流行的理念——“科技以人为本”。XHTML1.0的标准中定义了三个DTD,它们分别是:严格式(Strict)http://www.w3.org/TR/xhtmll/strict、过渡式(Transitional)http://www.w3.org/TR/xhtmll/transitional、分帧式(Frameset)http://www.w3.org/TR/xhtmll/frameset,每一种都有不同的应用。</p></div><div class="para-title2" id="paragraph_10">可扩展性</div><div class="para-container scroll_catalog fold" id="paraContainer1"><p class="text"></p></div><p class="text">正如XHTML字面上所体现的那样, XHTML具有一定的扩展性,这要归功于名称空间 (namespace )的引入。有了名称空间,用户可以在 XHTML文档中任意添加自己需要的标记,两个比较典型的例子是:MathML和SVG。MathML和SVG作为XML的一种具体应用,可以灵活地嵌入XHTML 文件中.将使得XHTML增色不少。现在,前者己经成为W3C正式推荐标准,而后者也即将成为建议推荐标准。</p></div><div class="para-title2" id="paragraph_10">可重用性</div><div class="para-container scroll_catalog fold" id="paraContainer1"><p class="text"></p></div><p class="text">XHTML的推出原本是作为XML的过渡标准,因为<a href="/zqxb/XML/0">XML</a>尚处于一个不断完善阶段,还有大量的工作需要去做,因此短时间内将很难推出一个完全支持XML的浏览器,即使声称支持XML的Internet Explorer5.0目前也只是提供部分的支持,而在这过渡期内,运用XHTML完全可以达到既定目标。另一方面,XHTML从根本上讲,也是一种规范的XML,即使将来XML彻底替代了 XHTML,XHTML文档也不会为XML浏览器或其它基于XML的工具所不容。</p></div><div class="para-title2" id="paragraph_10">XHTML及Web浏览语言展望</div><div class="para-container scroll_catalog fold" id="paraContainer1"><p class="text"></p></div><p class="text">为了很好地发挥XHTML的优点,满足各种不同 的需要,还有许多工作要做。目前,W3C正在紧锣密鼓 地进行XHTML相关标准的制定工作。有关的标准有:HTML的模块化、子集与扩展性、文档配置文件(Document Profiles )。届时,随着 XHTML1.1 规范的推出,XHTML文档的编辑者和浏览器能按实际需要去套用不同组合的DTD。那么,今后Web浏览将全采用什么语言呢?在这里,我们不得不提到XML,XML 是一种目前在业内广为流行的新兴标记语言,且大有成为Web浏览技术上的明日之星的趋势,但是不是说XML马上就可成为取代HTML的后继者呢?不是的,XML的确有许多优势,但它仍存在一些短时间内无法克服的缺点,XML还有很长的路要走,而XHTML做为对HTML 的扩展,其优势使其成为HTML的理想继承人,现在已经有针对XHTML应用的支持,MathML和SVG 就是很好的例证。因此,我们预测在不久的将来,XHTML将会成为浏览器中的核心页面语言,直至XML技术的真正成熟之日才会逐渐退出历史舞台。</p></div> </div> </div> <div class="zuqiu.zqxb.org protocol-container" wx:if="{{!partialLoad&&loadLemmaComplete===2}}"> <div bindtap="goToProtocol" class="zuqiu.zqxb.org protocol-item" data-id="0"><a href="/">免责声明</a></div> <div bindtap="goToProtocol" class="zuqiu.zqxb.org protocol-item" data-id="1">隐私政策</div> <div bindtap="goToProtocol" class="zuqiu.zqxb.org protocol-item" data-id="2">用户协议</div> </div> </div> <div class="zuqiu.zqxb.org bottom-bar"> <div class="zuqiu.zqxb.org border"></div> <div class="zuqiu.zqxb.org botton-flex-container"> <div class="zuqiu.zqxb.org botton-container"> <button bindtap="shareLemmaMessage" class="zuqiu.zqxb.org btn-botbar-share" openType="share"> <div class="zuqiu.zqxb.org ico-share"></div> <span class="zuqiu.zqxb.org txt-share">分享</span> </button> </div> <div class="zuqiu.zqxb.org botton-container"> <div bindtap="showCatalog" class="zuqiu.zqxb.org btn-botbar-catalog"> <div class="zuqiu.zqxb.org ico-catalog"></div> <span class="zuqiu.zqxb.org txt-catalog">目录</span> 22 </div> </div> </div> </div> <div class="zuqiu.zqxb.org catalog-container fake-catalog"> <block wx:for="{{lemmaInfo&&lemmaInfo.paragraphs}}" wx:key="unique"> <block wx:if="{{item.id===-9}}"></block> <div class="zuqiu.zqxb.org catalog-tab twonowrap" wx:elif="{{item.level===1}}"> <span class="zuqiu.zqxb.org catalog-number"> <block wx:if="{{catalogNumber[index]<=9}}">0</block>{{catalogNumber[index]}}. </span>{{item.title}}</div> <div class="zuqiu.zqxb.org catalog-tab2 nowrap {{item.title.length>6?'mini-sub':''}}" wx:elif="{{item.level===2}}">{{item.title}}</div> </block> </div> </body> </html>