-

XHTML - 介绍

XHTML代表"E X tensible h yper T分机中号 arkup 大号 anguage。这是互联网进化的下一步。XHTML 1.0是XHTML系列中的第一个文档类型。

XHTML几乎与HTML 4.01相同,只有很小的差异。这是一个更干净,更严格的HTML 4.01版本。如果您已经知道HTML,那么您需要注意不要学习最新版本的HTML。

XHTML由万维网联盟(W3C)开发,以帮助Web开发人员从HTML转换为XML。通过今天迁移到XHTML,Web开发人员可以进入所有的优势,同时仍然对内容的后向和未来兼容性保持信心。

为什么要使用XHTML?

将内容迁移到XHTML 1.0的开发人员可以获得以下好处 -

Web开发人员和网页浏览器设计师不断发现通过新的标记语言来表达想法的新方式。在XML中,引入新元素或附加元素属性相对容易。XHTML系列旨在通过XHTML模块和技术来适应这些扩展,以开发新的符合XHTML的模块。这些模块允许在开发内容和设计新的用户代理时组合现有和新功能。

基本理解

在进一步介绍之前,让我们快速了解一下HTML,XML和SGML。

什么是SGML?

这是小号 TANDARD 。广义中号 arkup 大号符合国际标准ISO 8879 HTML anguage(SGML)应用程序被广泛认为是万维网的标准出版语言。

这是用于描述标记语言的语言,特别是用于电子文档交换,文档管理和文档发布的语言。HTML是SGML中定义的语言的示例。

什么是XML?

XML代表é X tensible 中号 arkup 大号 anguage。XML是一种很像HTML的标记语言,它被设计来描述数据。XML标签不是预定义的。您必须根据需要定义自己的标签。

XHTML - 语法

XHTML语法与HTML语法非常相似,几乎所有有效的HTML元素在XHTML中也是有效的。但是,当您编写XHTML文档时,您需要额外注意使HTML文档符合XHTML。

在编写新的XHTML文档或将现有HTML文档转换为XHTML文档时,以下是要记住的要点:

以下是上述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标签和属性都需要以小写形式写入。

<!-- 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风格
紧凑 compact =“compact”
try checked =“checked”
宣布 declare =“declare”
read only readonly =“readonly”
残疾人士 disabled =“disabled”
选择 选择=“选择”
推迟 defer =“推迟”
ismap ismap =“ismap”
nohref nohref =“nohref”
noshade noshade =“noshade”
现在 nowrap =“nowrap”
multiple =“multiple”
noresize noresize =“noresize”

ID属性

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" />

语言属性

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

<!-- 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>元素。
<按钮> 不得包含<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>Every document must have a title</title>
   </head>
	
   <body>
      ...your content goes here...
   </body>
</html>

HTML与XHTML

由于XHTML是XML应用程序,所以必须改变在基于SGML的HTML 4中完全合法的某些做法。您在上一章中已经看过XHTML语法,因此XHTML和HTML之间的差异非常明显。以下是XHTML和HTML之间的比较。

XHTML文件必须形成良好

良好形式是XML引入的一个新概念。本质上,这意味着所有元素必须具有关闭标签,并且必须正确嵌套。

CORRECT:嵌套元素

<p>Here is an emphasized <em>paragraph</em>.</p>

不正确:重叠元素

<p>Here is an emphasized <em>paragraph.</p></em>

元素和属性必须小写

所有HTML元素和属性名称必须使用小写字母。这种差异是必要的,因为XHTML文档被假定为XML文档,XML是区分大小写的。例如,<li>和<LI>是不同的标签。

所有元素都需要结束标记

在HTML中,允许某些元素省略结束标签。但XML不允许结束标记被省略。

正确:终止元素

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

不正当:未终结的元素

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

属性值必须始终被引用

包括数值的所有属性值都必须引用。

正确:引用的属性值

<td rowspan="3">

不正确:未引用属性值

<td rowspan=3>

属性最小化

XML不支持属性最小化。属性值对必须写满。诸如compact和checked之类的属性名称不能在没有指定值的元素中出现。

正确:非最小化属性

<dl compact="compact">

不正确:最小化的属性

<dl compact>

空白处理属性值

当浏览器处理属性时,它会执行以下操作 -

脚本和风格元素

在XHTML中,脚本和样式元素不应直接存在“<”和“&”字符; 那么它们被视为标记的开始。诸如“<”和“&”的实体被XML处理器识别为实体引用,分别显示“<”和“&”字符。

在CDATA标记的部分中包装脚本或样式元素的内容可避免扩展这些实体。

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

另一种方法是使用外部脚本和样式文档。

具有idname属性的元素

XHTML建议id属性替换name属性。请注意,在XHTML 1.0中,这些元素name属性已被正式弃用,它将在后续版本的XHTML中被删除。

具有预定义值集的属性

HTML和XHTML都具有一些具有预定义和有限的值集合的属性。例如,输入元素的type属性在HTML和XML中,这些被称为枚举属性在HTML 4下,这些值的解释不区分大小写,因此TEXT的值相当于文本

在XHTML下,对这些值的解释是区分大小写的,所有这些值都是以小写定义的。

实体引用为十六进制值

HTML和XML都允许使用十六进制值引用字符。在HTML中,这些引用可以使用&#Xnn; &#xnn; 并且它们是有效的,但在XHTML文档中,您必须仅使用小写版本,例如&#xnn;

<html>元素是必须的

所有XHTML元素必须嵌套在<html>根元素中。所有其他元素可以具有必须成对并且正确嵌套在其父元素内的子元素。基本文件结构是 -

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>

XHTML - Doctypes

XHTML标准定义了三个文档类型定义(DTD)。最常用的和易于使用的是XHTML Transitional文档。

XHTML 1.0文档类型定义对应于三个DTD -

几个XHTML元素和属性,在一个DTD中可用,但在另一个DTD中不可用。因此,在编写XHTML文档时,必须仔细选择您的XHTML元素或属性。但是,XHTML验证器可以帮助您识别有效和无效的元素和属性。

请查看XHTML验证,了解更多详情。

XHTML 1.0严格

如果您打算严格使用级联样式表(CSS),并避免编写大部分XHTML属性,那么建议使用此DTD。符合此DTD的文件质量最好。

如果要使用XHTML 1.0 Strict DTD,那么您需要在XHTML文档的顶部包含以下行。

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

XHTML 1.0过渡

如果您打算使用许多XHTML属性以及很少的级联样式表属性,那么您应该使用此DTD,并且应该相应地编写您的XHTML文档。

如果要使用XHTML 1.0 Transitional DTD,那么您需要在XHTML文档的顶部包含以下行。

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

XHTML 1.0框架

当您想使用HTML框架将浏览器窗口分成两个或多个框架时,可以使用此选项。

如果要使用XHTML 1.0 Frameset DTD,则需要在XHTML文档的顶部包含以下行。

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

注意 - 无论您使用什么DTD编写XHTML文档; 如果它是一个有效的XHTML文档,那么您的文档被认为是一个高质量的文档。

XHTML - 属性

有几个XHTML / HTML属性是标准的,并且与所有XHTML / HTML标签相关联。这些属性在这里列出并简要描述 -

核心属性

在base,head,html,meta,param,script,style和title元素中无效。

属性 描述
class class_rule或style_rule 元素的类。
ID id_name 元素的唯一ID。
样式 style_definition 内联样式定义。
标题 tooltip_text 以鼠标提示显示的文字。

语言属性

属性指示被用于封闭内容的语言。语言是一个使用ISO标准的语言缩写,如鉴定FR法国,EN英语,等等。更多代码及其格式在www.ietf.org中有描述

在base,br,frame,frameset,hr,iframe,param和script元素中无效。

属性 描述
Directory ltr | rtl 设置文字方向。
ang language_code 设置语言代码。

Microsoft专有属性

Microsoft引入了许多新的专有属性与Internet Explorer 4和更高版本。

属性 描述
accesskey 字符 设置键盘快捷方式来访问元素。
语言 string 此属性指定要与绑定到元素的关联脚本一起使用的脚本语言,通常通过事件处理程序属性。可能的值可能包括JavaScript,jScript,VBS和VBScript。
tabindex 设置元素的制表顺序。
可容忍的 boolean 允许用户编辑在Internet Explorer 5.5或更高版本中呈现的内容。可能的值为true或false。
残疾人士 boolean 具有禁用属性集的元素可能会出现褪色,并且不会响应用户输入。可能的值为true或false。
hidefocus 开或关 Internet Explorer 5.5引入的这一专有属性将重点放在元素的内容上。必须使用tabindex属性将焦点应用于元素。
不可选 开或关 用于防止Internet Explorer 5.5中显示的内容被选中。

XHTML - 活动

当用户访问网站时,他们会执行点击文本,图像和超链接,鼠标悬停等操作。这些是JavaScript调用事件的示例。

我们可以在JavaScript或VBScript中编写我们的事件处理程序,并且可以将这些事件处理程序指定为事件标签属性的值。XHTML 1.0具有类似的HTML 4.01规范中可用的事件集。

级别事件<body>和<frameset>

当文档级别发生任何事件时,只有两个属性可用于触发任何JavaScript或VBScript代码。

属性 描述
负载 脚本 当XHTML文档加载时脚本运行。
onunload 脚本 脚本在XHTML文档卸载时运行。

注意 - 在这里,脚本是指VBScript或JavaScript的任何函数或代码。

<form>级别事件

以下六个属性可用于在表单级发生任何事件时触发任何JavaScript或VBScript代码。

属性 描述
交换 脚本 脚本在元素更改时执行。
提交 脚本 脚本在表单提交时执行。
onreset 脚本 当表单重置时脚本执行。
选择 脚本 选择元素时执行脚本。
onblur 脚本 当元素失去焦点时脚本执行。
onfocus 脚本 当元素获得焦点时脚本运行。

键盘事件

以下三个事件由键盘生成。这些事件在base,bdo,br,frame,frameset,head,html,iframe,meta,param,script,style和title元素中无效。

属性 描述
onkeydown 脚本 脚本在按键上执行。
onkeypress 脚本 脚本执行按键和释放。
onkeyup 脚本 脚本执行密钥释放。

其他活动

当与任何HTML标签接触时,鼠标会生成以下七个事件。这些事件在base,bdo,br,frame,frameset,head,html,iframe,meta,param,script,style和title元素中无效。

属性 描述
onclick 脚本 脚本通过鼠标单击执行。
ondblclick 脚本 鼠标双击执行脚本。
onmousedown 脚本 当按下鼠标按钮时执行脚本。
onmousemove 脚本 鼠标指针移动时执行脚本。
onmouseout 脚本 鼠标指针从元素移出时执行脚本。
onmouseover 脚本 当鼠标指针移动到元素上时,脚本会执行。
onmouseup 脚本 释放鼠标按钮时执行脚本。

XHTML - 版本1.1

W3C已经帮助互联网内容开发社区从格式不正确,非标准化的时代转变为格式正确,有效的XML世界。在XHTML 1.0中,这一举措主要是为了将现有的基于HTML 4(或更早版本)的内容轻松迁移到XHTML和XML。

W3C已经从XHTML系列中删除对不推荐使用的元素和属性的支持。这些元素和属性大部分是面向表达式的功能,通过样式表或客户端特定的默认行为更好地处理。

现在,W3C的HTML工作组已经根据XHTML 1.1的模块定义了一个初始文档类型。此文档类型旨在便携式到广泛的客户端设备,并适用于大多数互联网内容。

文件一致性

XHTML 1.1提供了严格符合XHTML文档的定义,必须满足以下所有标准:

在根元素之前必须是文档中的DOCTYPE声明。如果存在,DOCTYPE声明中包含的公共标识必须引用XHTML 1.1文档类型定义中找到的DTD。

以下是XHTML 1.1文档的示例 -

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
	
   <head>
      <title>This is the document title</title>
   </head>
	
   <body>
      <p>Moved to <a href="http://example.org/">example.org</a>.</p>
   </body>
	
</html>

- 在此示例中,包含XML声明。所有XML文档中都不需要上述XML声明。强烈建议XHTML文档作者在其所有文档中使用XML声明。当文档的字符编码不是默认的UTF-8或UTF-16时,需要这样的声明。

XHTML 1.1模块

XHTML 1.1文档类型由以下XHTML模块组成。

结构模块 - 结构模块定义了XHTML的主要结构元素。这些元素有效地作为许多XHTML家族文档类型的内容模型的基础。该模块中包含的元素和属性是 - body,head,html和title。

文本模块 - 此模块定义了所有基本文本容器元素,属性及其内容模型 - abbr,首字母缩略词,地址,块引用,br,cite,code,dfn,div,em,h1,h2,h3,h4,h5 ,h6,kbd,p,pre,q,samp,span,strong和var。

超文本模块 - 超文本模块提供用于定义与其他资源的超文本链接的元素。该模块支持元素a。

列表模块 - 名称建议,列表模块提供了面向列表的元素。具体来说,列表模块支持以下元素和属性:dl,dt,dd,ol,ul和li。

对象模块 - 对象模块提供用于通用对象包含的元素。具体来说,对象模块支持 - 对象和参数。

演示模块 - 该模块为简单的演示相关标记b,big,hr,i,small,sub,sup和tt定义元素,属性和最小内容模型。

编辑模块 - 该模块定义了用于编辑相关标记del和ins的元素和属性。

双向文本模块 - 双向文本模块定义了一个元素,可以用于声明元素内容的双向规则 - bdo。

表单模块 - 它提供HTML 4.0中发现的所有表单功能。具体来说,它支持 - 按钮,字段集,表单,输入,标签,图例,选择,optgroup,选项和textarea。

表模块 - 它支持以下元素,属性和内容模型 - 标题,col,colgroup,table,tbody,td,tfoot,th,thead和tr。

图像模块 - 它提供基本的图像嵌入,可以独立用于客户端图像映射的一些实现。它支持元素 - img。

客户端图像映射模块 - 它为客户端图像映射提供元素 - 区域和地图。

服务器端图像映射模块 - 支持图像选择和选择坐标传输。服务器端图像映射模块支持 - img上的属性ismap。

内部事件模块 - 它支持XHTML事件中探讨的所有事件。

元信息模块 - 元信息模块定义描述文档声明部分内的信息的元素。它包括元素元。

脚本模块 - 它定义了用于包含有关可执行脚本的信息或缺少对可执行脚本的支持的元素。该模块中包含的元素和属性是 - noscript和脚本。

样式表模块 - 定义了在声明内部样式表时要使用的元素。该模块定义的元素和属性是 - 样式。

样式属性模块(不推荐使用) - 定义样式属性。

链接模块 - 它定义了一个可用于定义到外部资源链接的元素。它支持链接元素。

基本模块 - 它定义了一个可用于定义基本URI的元素,为此文档中的相对URI被解析。该模块中包含的元素和属性是 - base

Ruby注释模块 - XHTML还使用RUBY中定义的Ruby注释模块,并支持 - ruby,rbc,rtc,rb,rt和rp。

XHTML 1.0严格修改

本节介绍XHTML 1.1和XHTML 1.0 Strict之间的区别。XHTML 1.1代表了与HTML 4和XHTML 1.0的偏离。

XHTML - 提示与技巧

本章列出了在编写XHTML文档时应注意的各种提示和技巧。这些提示和技巧可以帮助您创建有效的文档。

设计XHTML文档的提示

以下是设计XHTML文档的一些基本准则 -

为您的观众服务和参与的设计

当你想到满足你的观众想要的时候,你需要设计出有效和有趣的文件来达到这个目的。您的文档应该很容易找到所需的信息,并提供一个熟悉的环境。

例如,院士或医务工作者对长时间的句子,复杂的图表,具体术语等类似的日记文件感到舒适,而学龄儿童访问的文件必须简单,信息丰富。

重复使用您的文档

重新使用您以前创建的成功文档,而不是每次打包新项目时从头开始。

在XHTML文档中

以下是有关XHTML文档中的元素的一些提示 -

XML声明

所有XHTML文档中都不需要XML声明,但XHTML文档作者强烈建议在其所有文档中使用XML声明。当文档的字符编码不是默认的UTF-8或UTF-16时,需要这样的声明。

空元素

它们在空元素的尾部和/之前包括一个空格。例如,<br />,<hr />和<img src =“/ html / xhtml.gif”alt =“xhtml”/>。

嵌入式样式表和脚本

如果您的样式表使用“<”,“&”,“]]>”或“ - ”,请使用外部样式表。

如果您的脚本使用“<”,“&”或“]]>”或“ - ”,请使用外部脚本。

属性值内的换行符

避免换行符和属性值中的多个空格字符。这些被不同的浏览器处理不一致。

Isindex元素

不要在文档头中包含多个isindex元素。不建议使用isindex元素来支持输入元素。

XML:LANG属性

同时使用langxml:lang属性同时指定元素的语言。xml:lang属性的值优先。

元素标识符

XHTML 1.0已弃用a,applet,form,frame,iframe,imgmap元素的名称属性它们将在后续版本中从XHTML中删除。因此,开始使用id元素进行元素识别。

在属性值中使用&符号

和号(&&)应该作为一个实体参考。

<!-- This is invalid in XHTML -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

<!-- Correct XHTML way of writing this is as follows -->
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user

HTML和XML中的空格字符

一些HTML文档中合法的字符在XML文档中是非法的。例如,在HTML中,由于XML对字符的定义,格式转换字符(U + 000C)在XHTML中被视为空白,这是非法的。

命名为字符参照者;

命名的字符引用"(撇号,U + 0027)在XML 1.0中引入,但不会出现在HTML中。因此,Web开发人员应该使用 而不是按照预期在HTML 4 Web浏览器中工作。

XHTML - 验证

每个XHTML文档根据文档类型定义进行验证。在正确验证XHTML文件之前,必须添加正确的DTD作为文件的第一行或第二行。

一旦您准备好验证XHTML文档,您可以使用W3C验证器来验证您的文档。此工具非常方便,可帮助您解决文档中的问题。该工具不需要任何专业知识来执行验证。

文本框中的以下语句将显示详细信息。您需要提供要验证的页面的完整URL,然后单击验证页面按钮。

在下面的框中输入你的页面地址 -

该验证器检查各种格式的Web文档标记有效性,特别是在HTML,XHTML,SMIL,MathML等中。

还有其他工具来执行不同的其他验证。

XHTML - 摘要

我们假设您已经了解了所有与XHTML相关的概念。因此,您应该能够将HTML文档写入一个格式良好的XHTML文档,并获得更清晰的网站版本。

将HTML转换为XHTML

您可以将现有的HTML网站转换为XHTML网站。

让我们通过一些重要的步骤。要转换现有文档,您必须首先决定要遵守哪个DTD,并在文档顶部包含文档类型定义。

XHTML即将推出的版本

仍然XHTML正在改进,其下一个版本XHTML 1.1已被起草。我们在XHTML版本1.1一章中详细探讨了这一点。

XHTML标签,字符和实体

XHTML tags, characters, and entities are same as HTML, so if you already know HTML then you do not need to put extra effort to learn these subjects, especially for XHTML. We have listed out all HTML stuff along with XHTML tutorial also, because they are applicable to XHTML as well.

What is Next?

We have listed out various resources for XHTML and HTML so if you are interested and you have time in hand, then we recommend you to go through these resources to enhance your understanding on XHTML. Otherwise this tutorial must have given you enough knowledge to write your web pages using XHTML.

Your feedback on this tutorial is welcome at contact@tutorialspoint.com.