codecamp

XHTML 简介

HTML - XHTML


XHTML 是以 XML 格式编写的 HTML。


什么是 XHTML?

  • XHTML 指的是可扩展超文本标记语言

  • XHTML 与 HTML 4.01 几乎是相同的

  • XHTML 是更严格更纯净的 HTML 版本

  • XHTML 是以 XML 应用的方式定义的 HTML

  • XHTML 是 2001 年 1 月发布的 W3C 推荐标准

  • XHTML 是大小写敏感的,标准的 XHTML 标签应该使用小写。

  • XHTML 得到所有主流浏览器的支持


为什么使用 XHTML?

因特网上的很多页面包含了"糟糕"的 HTML。

如果在浏览器中查看,下面的 HTML 代码运行起来非常正常(即使它并未遵守 HTML 规则):

<html>        

<head>       

<title>This is bad HTML</title>       

<body>      

<h1>Bad HTML        

<p>This is a paragraph        

</body>

XML 是一种必须正确标记且格式良好的标记语言。

如果希望学习 XML,请阅读我们的 XML 教程

今日的科技界存在一些不同的浏览器技术。其中一些在计算机上运行,而另一些可能在移动电话或其他小型设备上运行。小型设备往往缺乏解释"糟糕"的标记语言的资源和能力。

所以 - 通过结合 XML 和 HTML 的长处,开发出了 XHTML。XHTML 是作为 XML 被重新设计的 HTML。


与 HTML 相比最重要的区别:

文档结构

  • XHTML DOCTYPE 是强制性的

  • <html> 中的 XML namespace 属性是强制性的

  • <html>、<head>、<title> 以及 <body> 也是强制性的

元素语法

  • XHTML 元素必须正确嵌套

  • XHTML 元素必须始终关闭

  • XHTML 元素必须小写

  • XHTML 文档必须有一个根元素

属性语法

  • XHTML 属性必须使用小写

  • XHTML 属性值必须用引号包围

  • XHTML 属性最小化也是禁止的

 注:在HTML中有时候会存在name=value的情况(即属性名等于属性值的情况),在不规范的HTML中,可以使用完整的写法,也可以使用最小化属性写法(只写属性名,不写属性值,这个时候属性值等于属性名),以check属性为例:

  <form>
       <label>性别:</label><br />
       男:<input type="radio" name="sex" value="男" checked /><br />
       女:<input type="radio" name="sex" value="女" checked ="checked"/>
   </form>

在HTML中,这两种写法都是可以的。但是在XHTML中,不能使用属性最小化写法。

另外,在很多地方,可能会将属性最小化表达为缩写或者简写,其想表达的意思可能与原意相同。但使用属性最小化的说法比较官方也比较通用 !


<!DOCTYPE ....>是强制性的

XHTML 文档必须进行 XHTML 文档类型声明(XHTML DOCTYPE declaration)。

您可以在 W3Cschool 的标签参考手册中找到完整的 XHTML 文档类型

<html>, <head>, <title>, 和 <body> 元素也必须存在,并且必须使用 <html> 中的 xmlns 属性为文档规定 xml 命名空间。

下面的例子展示了带有最少的必需标签的 XHTML 文档:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"        

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">               

<html xmlns="http://www.w3.org/1999/xhtml">     

          

<head>       

<title>Title of document</title>        

</head>   

            

<body>     

......        

</body>  

             

</html>



XHTML 元素必须合理嵌套

在 HTML 中,一些元素可以不互相嵌套,像这样:

<b><i>This text is bold and italic</b></i>

在 XHTML 中,所有的元素都必须互相合理地嵌套,像这样:

<b><i>This text is bold and italic</i></b>



XHTML 元素必须有关闭标签

错误示例:

<p>This is a paragraph     

<p>This is another paragraph

正确示例:

<p>This is a paragraph</p>        

<p>This is another paragraph</p>



空元素必须包含关闭标签

错误示例:

A break: <br>

A horizontal rule: <hr>        

An image: <img src="happy.gif" alt="Happy face">

正确示例:

A break: <br />        

A horizontal rule: <hr />        

An image: <img src="happy.gif" alt="Happy face" />



XHTML 元素必须是小写

错误示例:

<BODY>        

<P>This is a paragraph</P>        

</BODY>

正确示例:

<body>        

<p>This is a paragraph</p>        

</body>



属性名称必须是小写

错误示例:

<table WIDTH="100%">

正确示例:

<table width="100%">



属性值必须有引号

错误示例:

<table width=100%>

正确示例:

<table width="100%">



不允许属性简写

错误示例:

<input checked>        

<input readonly>        

<input disabled>        

<option selected>

正确示例:

<input checked="checked">        

<input readonly="readonly">        

<input disabled="disabled">        

<option selected="selected">



如何将 HTML 转换为 XHTML

  1. 添加一个 XHTML <!DOCTYPE> 到你的网页中

  2. 添加 xmlns 属性添加到每个页面的html元素中。

  3. 改变所有的元素为小写

  4. 关闭所有的空元素

  5. 修改所有的属性名称为小写

  6. 所有属性值添加引号


使用 W3C 验证器来测试你的 XHTML

尝试一下 »


HTML 文档类型
XHTML 元素
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }