XHTML语法与HTML语法非常相似,几乎所有有效的HTML元素在XHTML中都是有效的.但是当您编写XHTML文档时,需要特别注意使HTML文档符合XHTML.
以下是编写新XHTML文档时要记住的重要事项或将现有HTML文档转换为XHTML文档 :
在XHTML文档的开头写一个DOCTYPE声明.
仅以小写形式编写所有XHTML标记和属性.
正确关闭所有XHTML标记.
正确嵌套所有标签.
引用所有属性值.
禁止属性最小化.
将 name 属性替换为 id 属性.
弃用脚本标记的语言属性.
以下是上述XHTML规则的详细说明 :
所有XHTML文档都必须具有DO CTYPE宣言一开始.有三种类型的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标签和属性都只需要用小写字母书写.
<!-- This is invalid in XHTML --> <A Href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</A> <!-- Correct XHTML way of writing this is as follows --> <a href="/xhtml/xhtml_tutorial.html">XHTML Tutorial</a>
在示例中, Href 和锚标记 A 不是小写的,所以它是错误.
每个XHTML标签都应该有一个等效的结束标签,即使是空元素也应该有结束标签.下面是一个示例,显示使用标记的有效和无效方式 :
<!-- This is invalid in XHTML --> <p>This paragraph is not written according to XHTML syntax. <!-- This is also invalid in XHTML --> <img src="/images/xhtml.gif" >
以下语法显示了在XHTML中编写上述标记的正确方法.区别在于,我们已经正确关闭了这两个标签.
<!-- This is valid in XHTML --> <p>This paragraph is not written according to XHTML syntax.</p> <!-- This is also valid now --> <img src="/images/xhtml.gif" />
必须引用XHTML属性的所有值.否则,您的XHTML文档将被视为无效文档.以下示例显示语法 :
<!-- This is invalid in XHTML --> <img src="/images/xhtml.gif" width=250 height=50 /> <!-- Correct XHTML way of writing this is as follows --> <img src="/images/xhtml.gif" width="250" height="50" />
XHTML不允许属性最小化.这意味着您需要显式声明属性及其值.以下示例显示差异 :
<!-- This is invalid in XHTML --> <option selected> <!-- Correct XHTML way of writing this is as follows --> <option selected="selected">
以下是HTML中最小化属性的列表以及在XHTML : 中编写它们的方式;
HTML样式 | XHTML Style |
---|---|
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属性替换name属性.而不是使用name ="name",XHTML更喜欢使用id ="id".以下示例显示了 :
<!-- This is invalid in XHTML --> <img src="/images/xhtml.gif" name="xhtml_logo" /> <!-- Correct XHTML way of writing this is as follows --> <img src="/images/xhtml.gif" id="xhtml_logo" />
不推荐使用脚本标记的language属性.以下示例显示了此差异 :
<!-- This is invalid in XHTML --> <script language="JavaScript" type="text/JavaScript"> document.write("Hello XHTML!"); </script> <!-- Correct XHTML way of writing this is as follows --> <script type="text/JavaScript"> document.write("Hello XHTML!"); </script>
您必须正确嵌套所有XHTML标签.否则,您的文档将被视为不正确的XHTML文档.以下示例显示语法 :
<!-- This is invalid in XHTML --> <b><i> This text is bold and italic</b></i> <!-- Correct XHTML way of writing this is as follows --> <b><i> This text is bold and italic</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 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="https://img01.yuandaxia.cn/Content/img/tutorials/xhtml/" xml:lang="en"> <head> <title>Every document must have a title</title> </head> <body> ...your content goes here... </body> </html>