codecamp

XHTML 语法规则

通过上节《XHTML 与 HTML 之间的差异》的学习,我们知道编写 XHTML 代码需要干净的 HTML 语法,XHTML语法与HTML语法非常相似,几乎所有有效的HTML元素在XHTML中都是有效的。但是当你编写一个XHTML文档时,你需要特别注意使你的HTML文档符合XHTML。下面w3cschool.cn带大家深入学习XHTML的语法规则:



更多的 XHTML 语法规则:

  1. 在XHTML文档的开头写一个DOCTYPE声明。
  2. 只写小写的所有XHTML标签和属性。
  3. 关闭所有的XHTML标签。
  4. 将所有标签嵌套正确。
  5. 引用所有的属性值。
  6. 禁止属性最小化。
  7. 更换名称与属性ID属性。
  8. 弃用脚本标记的语言属性。


这里是上面的XHTML规则的详细解释

DOCTYPE声明

所有的XHTML文档在开始时都必须有一个DOCTYPE声明。有三种类型的DOCTYPE声明,在XHTML Doctypes一章中详细讨论。

这是一个使用DOCTYPE的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


区分大小写

XHTML是区分大小写的标记语言。所有的XHTML标签和属性都需要以小写字母来写。

<!-- 这在XHTML中是无效的 -->
<A Href="https://www.w3cschool.cn">w3cschool 在线教程</A>
<!-- 正确的XHTML写法如下 -->
<a href="https://www.w3cschool.cn">w3cschool 在线教程</a>

在这个例子中,超链接Href和锚标签A不是小写,所以这是不正确的。


关闭标签

每个XHTML标签都应该有一个等效的结束标签,即使是空的元素也应该有结束标签。

这里是一个例子,显示使用标签的有效和无效的方式:

<!-- 这在XHTML中是无效的 -->
<p>这段不是按照XHTML语法编写的。 <!-- 这在XHTML中也是无效的 -->
<img src="http://statics.w3cschool.cn/images/w3c/index-logo.png" >

以下语法显示了在XHTML中编写上述标记的正确方法。不同的是,这里我们已经关闭了两个标签。

<!-- 这在XHTML中是有效的 -->
<p>这段是按照XHTML语法编写的。</p>
<!-- 现在这也是有效的 -->
<img src="http://statics.w3cschool.cn/images/w3c/index-logo.png" />


属性行情

XHTML属性的所有值必须被引用。否则,你的XHTML文档被认为是一个无效的文档。

这里是显示语法的例子:

<!-- 这在XHTML中是无效的 -->
<img src="http://statics.w3cschool.cn/images/w3c/index-logo.png" width=228 height=60 /> <!-- 正确的XHTML写法如下 -->
<img src="http://statics.w3cschool.cn/images/w3c/index-logo.png" width="228" height="60" />


简写属性

XHTML不允许属性简写。这意味着你需要明确说明属性及其值。

以下示例显示了差异:

<!-- 这在XHTML中是无效的 -->
<option selected> <!-- 正确的XHTML写法如下 -->
<option selected="selected">

下面是一个 HTML 的简写属性列表,以及在 XHTML 中的改写:

HTML XHTML
compact compact="compact"
checked checked="checked"
declare declare="declare"
readonly readonly="readonly"
disabled disabled="disabled"
selected selected="selected"
defer defer="defer"
ismap ismap="ismap"
nohref nohref="nohref"
noshade noshade="noshade"
nowrap nowrap="nowrap"
multiple multiple="multiple"
noresize noresize="noresize"


ID属性

id属性取代了name属性。而不是使用name =“name”,XHTML更喜欢使用id =“id”。

以下示例显示了如何:

<!-- 这在XHTML中是无效的 -->
<img src="http://statics.w3cschool.cn/images/w3c/index-logo.png" name="w3cschool logo" /> <!-- 正确的XHTML写法如下 -->
<img src="http://statics.w3cschool.cn/images/w3c/index-logo.png" id="w3cschool logo" />

语言属性

脚本标记的语言属性已被弃用。以下示例显示了这种差异:

<!-- 这在XHTML中是无效的 -->
<script language="JavaScript" type="text/JavaScript"> document.write("w3cschool.cn编程教程"); </script> <!-- 正确的XHTML写法如下 -->
<script type="text/JavaScript"> document.write("w3cschool.cn编程教程");
</script>


嵌套标签

您必须正确嵌套所有的XHTML标签。否则,您的文档被认为是不正确的XHTML文档。

以下示例显示了语法:

<!-- 这在XHTML中是无效的 -->
<b><i> 这个文本是粗体和斜体</b></i>
<!-- 正确的XHTML书写方式如下 -->
<b><i> 这是粗体和斜体字。</i></b>


元素禁止

以下元素不允许其中有任何其他元素。这个禁止适用于所有的嵌套深度。意思是,它包括所有的降序元素。

元件禁令
<a>不得包含其他<a>元素。
<pre>不得包含<img>,<object>,<big>,<small>,<sub>或<sup>元素。
<button>不得包含<input>,<select>,<textarea>,<label>,<button>,<form>,<fieldset>,<iframe>或<isindex>元素。
<label>不得包含其他的<label>元素。
<form>不得包含其他<form>元素。


一个最小的XHTML文档

以下示例显示了XHTML 1.0文档的最小内容:

<?xml version="1.0" encoding="UTF-8"?>

<!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/TR/xhtml1" xml:lang="en" lang="en">
   <head>
      <title>每个文件都必须有一个标题-w3cschool.cn</title>
</head> <body> ...你的内容在这里——www.w3cschool.cn...
</body> </html>


注意

  1. 文件类型声明并非 XHTML 文档自身的组成部分。它并不是 XHTML 元素,所以他可以没有关闭标签。
  2. XHTML文档要求xmlns属性出现在html标签中。(XHTML 文档中没有这个属性,w3.org 的验证工具也不会提示错误。因为,"xmlns=http://www.w3.org/1999/xhtml" 是一个固定值,即使你的文档里没有包含它,这个值也会被自动添加到<html> 标签中。 )


你会在下一章《XHTML DTD三种文件类型声明》中学到更多关于 XHTML 文档类型声明的知识。


XHTML 与 HTML 之间的差异
XHTML DTD三种文件类型声明
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

XHTML 测验

XHTML 参考手册

关闭

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; }