codecamp

XHTML 与 HTML 之间的差异

由于XHTML是一个XML应用程序,所以必须改变在基于SGML的HTML 4中完全合法的某些实践。在前面的章节中你已经看到了XHTML语法,所以XHTML和HTML之间的差别非常明显。以下是XHTML和HTML的比较。





比较图表


HTML与XHTML比较图表

HTML XHTML
介绍(来自维基百科) HTML(超文本标记语言)是创建可以在Web浏览器中显示的网页和其他信息的主要标记语言。
XHTML(可扩展超文本标记语言)是一系列XML标记语言,它们反映或扩展了广泛使用的超文本标记语言(HTML)的版本,即HTML页面的编写语言。
文件扩展名 .html,.htm .xhtml,.xht,.xml,.html,.htm
互联网媒体类型 text / html application/ XHTML + xml
开发商 W3C和WHATWG 万维网联盟
格式的类型 文档文件格式 标记语言
从...延伸 SGML XML,HTML
代表 超文本标记语言 可扩展的超文本标记语言
应用 标准通用标记语言(SGML)的应用。 XML的应用
功能 网页是用HTML编写的。 扩展版本的HTML更严格,基于XML。
性质 灵活的框架需要宽松的HTML特定的分析器。 XML的限制性子集,需要使用标准的XML解析器进行解析。
起源 由Tim Berners-Lee于1987年提出。 2000年万维网联盟建议书。
版本 HTML 2,HTML 3.2,HTML 4.0,HTML 5。 XHTML 1,XHTML 1.1,XHTML 2,XHTML 5。



XHTML文档必须完善


结构良好性是XML引入的一个新概念。实质上,这意味着所有元素都必须有结束标记,并且必须正确嵌套它们。

正确:嵌套的元素

<p>这是一个强调的<em>段落</em>。</p>

错误:重叠的元素

<p>这是一个强调的 <em>段落。</p></em>


元素和属性必须小写


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


    所有元素都需要结束标记


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

    正确:终止的元素

    <p>这是一个段落。</p><p>这是另一个段落</p>
    <br><hr/>

    错误:未终止的元素

    <p>这是一个段落。<p>这是另一个段落。
    <br><hr>

    必须始终引用属性值


    所有属性值(包括数值)都必须加引号。

    正确:引用属性值

    <td rowspan="3">

    不正确:未引用的属性值

    <td rowspan=3>


    属性简写


    XML不支持属性简写。 Attribute-value 属性-值必须全部写入。属性名称(如compact和checked)不能在没有指定值的元素中出现。

    正确:非简写的属性

    <dl compact="compact">

    错误:简写的属性

    <dl compact>


    属性值中的空白处理


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

    • 带前导和尾随空格。
    • 将一个或多个空格字符(包括换行符)映射到单个单词空间中。

    脚本和样式元素


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

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

    <script type="text/JavaScript">
       <![CDATA[
          ... 转义的VB或java脚本在这里... ...
    ]]> </script>

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

    带有id和name属性的元素


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

    具有预定义值集的属性


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

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

    作为十六进制值的实体引用


    HTML和XML都允许使用十六进制值引用字符。在HTML中,这些引用可以使用&#Xnn; 或者&#xnn; 而且它们是有效的,但在XHTML文档中,只能使用小写字母,例如&#xnn; 。

    <html>元素是必须的


    所有的XHTML元素都必须嵌套在<html>根元素中。所有其他元素都可以有子元素,它们必须成对并正确嵌套在其父元素中。

    基本的文件结构是:

    <!DOCTYPE html....>
    
    <html>
       <head> w3cschool编程教程 </head>
       <body> www.w3cschool.cn </body>
    </html>



    最后w3cschool.cn做个总结


    • 标签与属性都要小写 
    • 别用nameid
    • 标签不能重叠,但可以嵌套
    • 标签都要有始有终,要么以</p>形式结束,要么以<br />形式结束
    • 每个属性都要有属性值,并且属性值要在双引号中


    关于XHTML语法将在下节XHTML 语法规则中做详细说明


    为什么要使用XHTML?
    XHTML 语法规则
    温馨提示
    下载编程狮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; }