一、什么是XHTML
XHTML 是一种以 XML 格式编写的 HTML,是在 2000 年 1 月首次成为 W3C 的推荐标准,它融合了 HTML 的功能和 XML 的严格性,旨在更加严谨地定义网页的结构和内容。XHTML 采用了严格的 XML 语法规则,包括对元素的嵌套、大小写的敏感性等方面的要求,同时也继承了 HTML 的标签和属性。
XHTML 的基本规则包括:
1、所有标签必须是小写;
2、所有标签必须正确地嵌套;
3、所有标签必须关闭,即使是空元素(比如 <br>)也要使用闭合标签或者 XHTML 空元素语法(比如 <br />);
4、属性值必须用双引号括起来。
在实践中,大多数主流浏览器都支持 XHTML,需要注意的是,XHTML 的兼容性要求更高,开发人员需要特别注意遵循严格的语法规则,以确保页面能够在各种浏览器中正确显示。
二、为什么使用XHTML
因特网上的很多页面包含了”糟糕”的 HTML。如果在浏览器中查看,下面的 HTML 代码运行起来非常正常(即使它并未遵守 HTML 规则):
<html> <head> <title>This is bad HTML</title> <body> <h1>Bad HTML <p>This is a paragraph </body>
以下是经过修正后的 HTML 代码:
<!DOCTYPE html> <html> <head> <title>This is bad HTML</title> </head> <body> <h1>Bad HTML</h1> <p>This is a paragraph</p> </body> </html>
XML 是一种必须正确标记且格式良好的标记语言,而 XHTML 则是作为 XML 被重新设计的 HTML,它融合了 HTML 的功能和 XML 的严格性,旨在更加严谨地定义网页的结构和内容。通过结合 XML 和 HTML 的长处,XHTML 的出现提供了更加严格和规范的网页开发方式,有助于提高页面的可维护性和可扩展性。
三、HTML和XHTML区别
1、文档结构:
- XHTML DOCTYPE 是强制性的:XHTML 文档必须以正确的 DOCTYPE 声明开头。这有助于浏览器正确地渲染页面,并指明页面所使用的标准;
- <html> 中的 XML namespace 属性是强制性的:XHTML 要求在 <html> 标签中声明 XML namespace,用来指定文档所使用的命名空间;
- <html>、<head>、<title> 以及 <body> 也是强制性的:这些标签在 XHTML 中是必不可少的,它们定义了文档的基本结构和内容。
2、元素语法:
- XHTML 元素必须正确嵌套:在 XHTML 中,元素必须按正确的层次结构嵌套,不允许出现交叉或不完整的嵌套关系;
- XHTML 元素必须始终关闭:每个元素必须被明确地关闭,即使是没有内容的空元素也需要进行闭合;
- XHTML 元素必须小写:XHTML 对标签名大小写敏感,强制要求标签名必须使用小写字母;
- XHTML 文档必须有一个根元素:XHTML 文档必须有且仅有一个根元素,通常是 <html> 标签。
3、属性语法:
- XHTML 属性必须使用小写:与标签名类似,XHTML 要求所有属性名必须使用小写字母;
- XHTML 属性值必须用引号包围:XHTML 要求所有属性值必须使用引号(单引号或双引号)括起来;
- XHTML 属性最小化也是禁止的:XHTML 不允许省略属性值,所有属性必须显式地设置值。
4、属性写法差异
可以使用完整的属性写法,也可以使用最小化属性写法,即只写属性名而不写属性值,此时默认属性值等于属性名本身。例如checked 属性就可以以最小化属性写法表示为 <input type=”radio” name=”sex” value=”男” checked />,或者完整写法为 <input type=”radio” name=”sex” value=”女” checked=”checked” />。
然而,在 XHTML 中,不能使用属性最小化写法。XHTML 对属性的书写要求更加严格,所有属性都必须以完整的形式出现,即属性名和属性值必须同时存在。因此,在 XHTML 中,需要将 checked 属性写为 <input type=”radio” name=”sex” value=”男” checked=”checked” /> 这种完整的形式。
四、文档类型声明
在编写 XHTML 文档时,必须包含 XHTML 文档类型声明(XHTML DOCTYPE declaration)。XHTML 文档类型声明的目的是告知浏览器当前文档遵循的标准和规范,以便浏览器能够正确地解释和渲染文档内容。同时,文档类型声明也有助于确保文档的兼容性和一致性。
XHTML 文档类型声明通常以 <!DOCTYPE> 开头,后面跟着具体的声明信息,例如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
这个声明指明了文档所使用的 XHTML 版本和 DTD(文档类型定义),确保文档被正确解析和显示。
五、XHTML元素使用规范
1、必须合理嵌套
在 HTML 中,一些元素可以不互相嵌套,像这样:
<b><i>This text is bold and italic</b></i>
在 XHTML 中,所有的元素都必须互相合理地嵌套,像这样:
<b><i>This text is bold and italic</i></b>
2、必须有关闭标签
错误示例:
<p>This is a paragraph <p>This is another paragraph
正确示例:
<p>This is a paragraph</p> <p>This is another paragraph</p>
3、空元素必须包含关闭标签
错误示例:
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" />
4、XHTML元素必须是小写
错误示例:
<BODY> <P>This is a paragraph</P> </BODY>
正确示例:
<body> <p>This is a paragraph</p> </body>
5、属性名称必须是小写
错误示例:
<table WIDTH="100%">
正确示例:
<table width="100%">
6、属性值必须有引号
错误示例:
<table width=100%>
正确示例:
<table width="100%">
7、不允许属性简写
错误示例:
<input checked> <input readonly> <input disabled> <option selected>
正确示例:
<input checked="checked"> <input readonly="readonly"> <input disabled="disabled"> <option selected="selected">
六、HTML转换为XHTML
下面展示了如何将给定的 HTML 代码转换为符合要求的 XHTML 代码:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>我的网页</title> </head> <body> <h1>欢迎访问我的网页</h1> <p>这是一个示例段落。</p> <img src="logo.png" alt="Logo" /> <br /> <input type="text" name="username" id="username" value="" /> <a href="https://www.example.com" rel="external nofollow" >点击这里</a> </body> </html>
在这个示例中进行了以下操作:
1、添加了<!DOCTYPE> 声明,指定了 XHTML 文档类型;
2、在 <html> 标签中添加了 xmlns 属性,以指定命名空间;
3、将所有标签和属性名都改为小写;
4、对空元素(如 <br>和 <img>)进行了闭合;
5、给所有的属性值都添加了引号。