XML | HTML | |
---|---|---|
数据 | 传输和存储数据 | 显示数据(排版) |
大小写 | 严格区分 | 不区分 |
根元素数目 | 规范下的 XML 有且只会有一个根元素 | HTML 可以有多个根元素 |
标签 | 可以根据需要自定义,并且可扩展 | 属于预定义的标签 |
总结 | XML 不是 HTML 的升级,也不是 HTML 的代替品,虽然两者有点相似,但它们的应用领域及其范围都不同。 |
XML 的出现背景:在实际开发中,不同语言(如 Java、JavaScript 等)的应用程序之间数据传递的格式不同,导致它们进行数据交换时很困难,XML 就应运而生了!(XML 是一种通用的数据交换格式,可以十分方便地实现格式交换)
XML 的简单易于在任何应用程序中读/写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其他的数据交换格式,但不久之后它们都将支持 XML,那就意味着程序可以更容易的与 Windows、Mac OS、Linux 以及其他平台下产生的信息结合,然后可以很容易加载 XML 数据到程序中并分析它,并以 XML 格式输出结果。
XML 是一种类似 HTML 的标记语言,叫可扩展标记语言(Extensible Markup Language)。通过标准的数据包装格式,它可以用于数据的说明、储存、传输。
XML 文件现在多用于作配置文件,设置文件比较多,很多软件,框架都会采取 XML 作为配置文件。
在一个完整的 XML 文档中必须包裹一个 XML 文档声明,且此声明必须位于文档的首行。
(XML 声明表示此文档是一个 XML 文档,以此判断需要遵循哪个 XML 版本的规范)
- XML 文档声明的语法格式如下:
- "version" encoding="value" standalone="value"?>
-
- version 版本号
- encoding 编码集
- standalone 指定该 XML 文档是否与一个外部文档嵌套使用,取值为 yes/no
XML 文档的主体内容由元素 Element 组成。元素以树状分层排列,一个元素可以嵌套在另一个元素上。但 XML 文档有且仅有一个根元素。
- 元素一般由开始标签、元素内容和结束标签构成,示例:
- <城市>北京城市>
在 XML 文档中可以为元素定义多个属性。属性是对元素的进一步描述/说明。
- 属性是依附于元素而存在的,且每个属性都有自己的名称和取值,示例:
- <价格 单位="元">¥17.00价格>
XML 也有注释,它们不会被 XML 解析器处理。
- 格式如下:
如果一篇文章的语法正确,但其内容包含违法言论或逻辑错误,如此的文章应该不允许被发表的。同理,在 XML 文档里也可以对其内容进行某些条件的限制。
DTD 是 XML 约束模式语言的一种,根据它语法创建的文件称为 DTD 文件。
book.dtd 文件示例:
- 元素定义格式:
-
-
- #PCDATA)>
- #PCDATA)>
- #PCDATA)>
book.xml 文件示例:
- "1.1" encoding="UTF-8"?>
- SYSTEM "book.dtd">
-
- <书架>
- <书>
- <书名>西游记书名>
- <作者>吴承恩作者>
- <售价>¥56.00售价>
- 书>
- <书>
- <书名>呼啸山庄书名>
- <作者>艾米莉·勃朗特作者>
- <售价>¥54.00售价>
- 书>
- 书架>
公共 DTD 文件引用需要声明 PUBLIC 属性,示例:
- web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
内部嵌
- DTD 文件完整内部嵌入格式如下:
- "1.1" encoding="UTF-8" standalone="yes"?>
-
- DTD 定义语句
- ···
- ]>
-
- book_DTDinset.xml 示例:
- "1.1" encoding="UTF-8" standalone="yes"?>
-
-
-
- #PCDATA)>
- #PCDATA)>
- #PCDATA)>
- ]>
- <书架>
- <书>
- <书名>西游记书名>
- <作者>吴承恩作者>
- <售价>¥56.00售价>
- 书>
- <书>
- <书名>呼啸山庄书名>
- <作者>艾米莉·勃朗特作者>
- <售价>¥54.00售价>
- 书>
- 书架>
格式 | 说明 |
---|---|
(#PCDATA) | 表示元素中嵌套的内容是普通文本字符串 |
(子元素, ···) | 说明元素会包含其它元素(即有子元素) |
(#PCDATA | 子元素, ···) | 说明元素既可以包含字符数据,也可以包含子元素 |
EMPTY | 说明该元素是一个无内容的空元素。假如文档中元素本身就有明确的含义,就会使用 EMPTY |
ANY | 表示该元素可以包含任何东西。。像根元素一样 |
介绍 DTD 元素的一些常用符号形式:
属性定义
- 属性名1 属性类型 设置说明
- 属性名2 属性类型 设置说明
- ···
- >
-
- 属性名1 属性类型 设置说明
- 属性名2 属性类型 设置说明
- ···
- >
-
- ······
-
- ]>
- ANY>
- EMPTY>
-
- ]>
- #PCDATA)>
- EMPTY>
-
- 编号 ID #REQUIRED
- 上司 IDREF #IMPLIED>
-
- 上班时间 IDREFS #REQUIRED>
- ]>
- <幸福超市>
- <介绍 成立时间="诞生于1996"/>
- 幸福超市>
- <购物篮>
- <肉/>
-
- <肉 品种="鱼肉"/>
- <肉 品种="牛肉"/>
- 购物篮>
- <员工们>
- <员工 编号="110">
- <姓名>张三姓名>
- <联系电话>110联系电话>
- <上班时间 星期="一 三 五">
- 员工>
- <员工 编号="119" 上司="王五">
- <姓名>李四姓名>
- <联系电话>119联系电话>
- <上班时间 星期="二 四 六"/>
- 员工>
- 员工们>
格式 | 说明 |
---|---|
#REQUIRED | 表示元素此属性是必须设置的。多定义在 id 上 |
#IMPLIED | 表示元素该属性可有可无。 |
#FIXED | 表示元素该属性的默认值。 |
"默认值" | 与 #FIXED 一样,但有所不同的是如果 XML 文档中设置了该属性的值,则此值可以覆盖原来的默认值。 |
DTD 常用属性类型的介绍:
出现背景:由于 DTD 采用的是非 XML 语法格式,且其描述不全面;而 Schema 采用的是本身就是一个 XML 文档
Schema | DT D |
---|---|
XML 语法格式,其本身就是一种 XML 文档 | 非 XML 语法格式,其描述有局限 |
本身有 XML 一样的合法性验证机制 | 本身缺失较好的验证机制,必须独立处理 |
名称空间支持度:Schema > DTD | |
数据类型支持数目:Schema > DTD | |
约束能力:Schema > DTD |
暂空
更多的看这篇文章就好了
https://www.cnblogs.com/SanMaoSpace/p/3139186.htmlhttps://www.cnblogs.com/SanMaoSpace/p/3139186.html