分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

HTML和XHTML区别

发布时间:2023-09-06 01:50责任编辑:董明明关键词:HTML

HTML和XHTML

XHTML(eXtensible HyperText Markup Language,可扩展超文本标记语言)是将HTML(HyperText Markup Language,超文本标记语言)作为XML应用而重新定义的标准。
在HTML5标准中定义了两种语法(HTML 4.01XHTML 1)。在标准中可以通过定义一个特殊的DOCTYPE标签来XHTML,但是没有浏览器去实现这一标准。所以最后HTML5标准推翻了这个决定。
可以通过使用MIME类型(包含在HTTP请求中的Content-Type)来指示语法的选择:如果需要使用XHTML,MIME类型应该为application/xhtml+xml,如果为text/ html则不使用XHTML。
适当的MIME类型必须存在于HTTP请求中的Content-Type中。如果你只把MIME类型写在HTML标签中,如<meta http-equiv=…>,依然会被当作text/html执行。

HTML文档规范

HTTP/1.1 200 OKContent-Type: text/html<!DOCTYPE html><html lang=en> ?<head> ???<meta charset=utf-8> ???<title>HTML</title> ?</head> ?<body> ???<p>I am a HTML document</p> ?</body></html>

XHTML文档规范

HTTP/1.1 200 OKContent-Type: application/xhtml+xml<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> ?<head> ???<title>XHTML</title> ?</head> ?<body> ???<p>I am a XHTML document</p> ?</body></html>

XHTML兼容性

目前大多数浏览器都支持XHTML,其中包括Firefox、Chrome、Safari、Opera和IE浏览器(IE 9)。(Internet Explorer 8和旧浏览器在看到正确配置的XHTML MIME类型的XHTML文档时,会显示未知文件类型的下载对话框)。
需要注意的是,有许多流行的JavaScript库和开发工具对XHTML不支持。

XHTML和HTML的区别

XHTML是XML应用,所以XHTNL的代码规范要求要比HTML更严格。但对于习惯HTML的程序员有时可能会带来一些不便,如比较语句a<b中的<会被解析为一个标签,造成代码运行与预期不符。为了应对这些问题,慢慢有了以下的规范:

1.JavaScript中<&应包含在CDATA代码块中

在XHTML中JavaScript的闭合符不能在CDATA代码块以外的地方存在。如以下错误示例:

<script type="text/javascript"> ?var i = 0; ???while (++i < 10) ?{ ???// ... ?}</script>

可以通过CDATA代码块的方式解决,如下例:

<script type="text/javascript"><![CDATA[ ?var i = 0; ???while (++i < 10) ?{ ???// ... ?}]]></script>

也有其他方法解决该问题,如将<替换为&lt;。但这样减低了代码可读性,所以不推荐使用。

2.注释<!—— ... ——> 中注释内容不能再包含双破折号——

在XHTML中,以<!—— ... ——>形式注释的内容不应包含双破折号——,如以下错误示例:

<script type="text/javascript"><!-- ?var i; ?var sum = 0; ?for (i = 10; i > 0; --i) ?{ ???sum += i; ?}// --></script>

示例中以<!—— ... ——>形式注释的内容依然会被解析。在旧浏览器版本中,有经验的开发者在使用内联样式和内联脚本时通常会将其内容包含在注释中。如下例:

<style type="text/css"> <!-- ?body {background-color: blue; color: yellow;} --></style><script type="text/javascript"> <!-- ?var i = 0; ?var sum = 0; ??for (i = 0; i < 10; ++i) ?{ ???sum += i; ?} ?alert(‘sum = ‘ + sum); // --></script>

这是因为在旧浏览器版本中,内联样式和内联脚本还未普及,使用style和script标签不会被正常解析,而是直接把标签的内容输出。如下例:

<script> ?var i = 0; ?alert(i);</script>

这段JS代码在旧浏览器版本中,不会执行,而是直接输出以下内容:

var i = 0;alert(i);

不过,目前现代浏览器都已经开始支持内联样式和内联脚本,所以一般不采用这种写法。

参考文献

MDN —— Glossary XHTML

MDN —— Properly Using CSS and JavaScript in XHTML Documents

HTML和XHTML区别

原文地址:https://www.cnblogs.com/limbobark/p/8910107.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved