当前位置: 首页 > news >正文

HTML、XHTML 和 XML区别

HTML、XHTML 和 XML 这三兄弟的区别

  • HTML: 老大哥,负责网页长啥样,性格比较随和,有点小错误也能容忍。
  • XHTML: 二哥,看着像 HTML,但规矩严,是按 XML 的规矩来的 HTML,更规范。
  • XML: 小弟,负责存储和传输数据,非常灵活,标签可以自己随便定,但规矩最严。

它们仨长啥样?(代码示例)

1. HTML (HyperText Markup Language)

  • 用途: 定义网页的内容和结构
  • 特点: 语法相对宽松,不区分大小写,标签可以不闭合(虽然不推荐)。
<!DOCTYPE html> <!-- 文档类型声明 -->
<html>
<head><title>HTML 示例</title>
</head>
<BODY> <!-- 大写也能认 --><h1>这是一个 HTML 标题</h1><p>这是一个段落。注意看,我没写结束标签 <P><img src="image.jpg" alt="示例图片"> <!-- 空标签可以不自闭合 --><br> <!-- 换行 --><P>浏览器通常也能凑合显示。</p> <!-- 大写也能认 -->
</BODY>
</html>

2. XHTML (Extensible HyperText Markup Language)

  • 用途: HTML 的 XML 版本,目标是让网页结构更严谨
  • 特点: 必须遵循 XML 的严格语法规则。
    • 标签必须小写。
    • 所有标签必须闭合(包括空标签,如 <br />)。
    • 属性值必须用引号(单或双)括起来。
    • 必须正确嵌套。
    • 必须有根元素 (<html>)。
    • 必须DOCTYPE 声明,且比 HTML 更严格。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- 严格的 DOCTYPE -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh"> <!-- 根元素,带命名空间 -->
<head><title>XHTML 示例</title> <!-- 必须小写 -->
</head>
<body><h1>这是一个 XHTML 标题</h1><p>这是一个段落。标签必须小写且闭合。</p> <!-- 必须闭合 --><img src="image.jpg" alt="示例图片" /> <!-- 空标签必须自闭合 --><br /> <!-- 空标签必须自闭合 --><p>语法非常严格。</p>
</body>
</html>

3. XML (Extensible Markup Language)

  • 用途: 主要用于存储和传输数据,而不是展示。它的重点在于数据的结构
  • 特点:
    • 没有预定义标签,标签是你自己根据数据需求自定义的。
    • 语法极其严格,必须“格式良好”(Well-formed)。
    • 必须有且只有一个根元素。
    • 所有标签必须闭合。
    • 区分大小写。
    • 属性值必须加引号。
    • 必须正确嵌套。
<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<note> <!-- 根元素 (自定义) --><to>小明</to> <!-- 自定义标签 --><from>小红</from><heading>提醒</heading><body>周末别忘了咱们的约定!</body><priority level="high" /> <!-- 自定义属性,空标签自闭合 -->
</note>

快速区分流程图(文字版)

开始: 你想干嘛?
展示网页内容?
需要严格语法/XML兼容?
存储/传输数据?
使用 XHTML HTML的XML严格版
使用 HTML 语法宽松, 容错性好
使用 XML 自定义标签, 语法极严
考虑其他格式 如 JSON, CSV

流程解读:

  1. 你的目的是什么?
  2. 展示网页内容?
    • 是 -> 需要严格的语法和 XML 兼容性吗?
      • 是 -> 用 XHTML (重点:基于XML,语法严格)
      • 否 -> 用 HTML (重点:用于网页展示,语法宽松)
    • 否 -> 需要存储或传输结构化数据吗?
      • 是 -> 用 XML (重点:用于数据,标签自定义,语法极严)
      • 否 -> 考虑其他数据格式 (JSON 等)。

核心区别总结 (划重点!)

特性HTML (超文本标记语言)XHTML (可扩展超文本标记语言)XML (可扩展标记语言)
主要用途网页内容展示与结构更严格的网页内容展示与结构数据存储与传输
语法规则宽松, 浏览器容错性强严格, 必须符合 XML 规范非常严格, 必须格式良好 (Well-formed)
标签预定义, 不区分大小写预定义 (同HTML), 必须小写自定义, 区分大小写
闭合标签部分标签可省略闭合所有标签必须闭合 (空标签用 />)所有标签必须闭合 (空标签用 />)
属性值引号有时可省略必须用引号必须用引号
根元素<html><html> (带 xmlns 命名空间)必须有且只有一个根元素
DOCTYPE需要, 相对简单必须, 且更复杂严格不需要 (但可以有 DTD 或 Schema 定义结构)
可扩展性有限有限高度可扩展 (自己定义标签)
目标人类可读, 浏览器能渲染机器更容易解析, 跨平台兼容性更好机器可读, 数据交换

总结

  • HTML: 虽然浏览器很宽容,但写规范的 HTML(小写标签、闭合标签、属性加引号)总是好习惯,也方便向 XHTML 过渡或被工具处理。避免像示例中那样大小写混用或不闭合标签。
  • XHTML: 现在用得相对少了。HTML5 已经吸收了它的一些优点,并且更灵活。如果你不是有特定需求(比如需要严格的 XML 处理流程),直接用 HTML5 通常更方便。
  • XML: 非常适合定义清晰的数据结构,尤其是在需要验证数据格式(配合 DTD 或 XSD Schema)的场景。但对于简单的数据交换,JSON 通常更轻量、易读。

拓展学习

  • HTML5: 了解 HTML 的最新标准,它引入了许多新标签(如 <article>, <section>, <nav>, <video>, <audio>)和 API,并且在语法上比 XHTML 更灵活,同时推荐编写良好格式的代码。
  • CSS (Cascading Style Sheets): HTML/XHTML 负责结构,CSS 负责样式(颜色、布局、字体)。它们是网页开发的黄金搭档。
  • JavaScript: 让网页动起来,处理用户交互、数据请求等。
  • JSON (JavaScript Object Notation): 目前最流行的数据交换格式之一,比 XML 更简洁,尤其在 Web API 中广泛使用。了解它和 XML 的优缺点及适用场景。
  • DTD (Document Type Definition) / XSD (XML Schema Definition): 如果你深入使用 XML,需要了解如何定义 XML 文档的结构和规则,确保数据的一致性和有效性。
http://www.xdnf.cn/news/116569.html

相关文章:

  • 网络安全 | F5 WAF 黑白名单配置实践指南
  • 【网工第6版】第5章 网络互联⑦
  • 【设计模式-4】深入理解设计模式:工厂模式详解
  • 自由学习记录(57)
  • Julia Notebook
  • React中createPortal 的详细用法
  • 问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
  • 如何快速高效学习Python?
  • [密码学实战]在Linux中实现SDF密码设备接口
  • Python基础语法:字面量,注释,关键字,标识符,变量和引用,程序执行的3大流程
  • SIGGRAPH投稿相关官方指导
  • R-CNN,Fast-R-CNN-Faster-R-CNN个人笔记
  • Visual Studio C/C++编译器cl.exe的/source-charset与/execution-charset设置项
  • Linux平台实现低延迟的RTSP、RTMP播放
  • dirsearch 使用教程:详细指南与配置解析
  • Java 使用 RabbitMQ 消息处理(快速上手指南)
  • 考拉悠然:科技与匠心,以烟草虫情AI监测系统共筑品质未来
  • LeetCode 3040 相同分数的最大操作数目II
  • c加加学习之day06->STL标准库->day01
  • 【高中数学/古典概率】4红2黑六选二,求取出两次都是红球的概率
  • 【C++】内存管理:内存划分、动态内存管理(new、delete用法)
  • 跑MPS产生委外采购申请(成品)
  • 机器人结构认知与安装
  • Vue 3 相比 Vue 2 的优势
  • 深入详解人工智能数学基础——概率论中的贝叶斯深度学习
  • likeadmin前端请求地址配置踩坑
  • CentOS 7上安装与配置Memcached及PHP客户端使用教程
  • PCB 过孔铜厚的深入指南
  • QMT学习课程Day1
  • Web3钱包开发功能部署设计