1.什么是XML?
- XML 指可扩展标记语言(eXtensible Markup Language)
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义,您需要自行定义标签
- XML 被设计为具有自我描述性
- XML 被设计用来结构化、存储以及传输信息
- XML 是 W3C 的推荐标准
2.XML 与 HTML 的主要差异
- XML 不是 HTML 的替代
- XML 和 HTML 为不同的目的而设计
- XML 被设计为传输和存储数据,其焦点是数据的内容
- HTML 被设计用来显示数据,其焦点是数据的外观
- HTML 旨在显示信息,而 XML 旨在传输信息
3.XML语法规则
- XML 文档必须包含根元素,该元素是所有其他元素的父元素。
- XML 文档中的元素形成了一棵文档树
- 所有元素均可拥有文本内容和属性,所有元素均可拥有子元素
- 所有 XML 元素都须有关闭标签
- XML 标签对大小写敏感
- XML 必须正确地嵌套
- XML 的属性值须加引号
- 在 XML 中,一些字符拥有特殊的意义,应该使用实体引用
4.注释
- 在 XML 中编写注释的语法与 HTML 的语法很相似:<!-- This is a comment -->
- 在 XML 中,空格会被保留,HTML 会把多个连续的空格字符裁减(合并)为一个,在 XML 中,文档中的空格不会被删节。
- XML 以 LF 存储换行,在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。
5.什么是 XML 元素?
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
6.XML 命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
- 可使用任何名称,没有保留的字词。
7.XML属性
- XML 元素可以在开始标签中包含属性,类似 HTML。属性 (Attribute) 提供关于元素的额外(附加)信息。
- 属性值必须被引号包围,不过单引号和双引号均可使用。如果属性值本身包含双引号,那么有必要使用单引号包围它,或者可以使用实体引用。
- 没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。
8.避免 XML 属性?
因使用属性而引起的一些问题:
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展(为未来的变化)
- 属性难以阅读和维护
9.XML 验证
拥有正确语法的 XML 被称为“形式良好”的 XML。通过 DTD 验证的 XML 是“合法”的 XML。“形式良好”或“结构良好”的 XML 文档拥有正确的语法。
- XML 文档必须有根元素
- XML 文档必须有关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性必须加引号
合法的 XML 文档是“形式良好”的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则。
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema。
10.DTD验证
DTD包含了一套用来描述并限制XML文档结构的语法规则
- 元素的定义规则;
- 元素之间的关系规则;
- 属性的定义规则;
- 可使用的实体或符号规则。
11.命名空间
- 什么是命名空间? 使用URL作为XML的命名空间
- 为什么要使用命名空间? XML的元素名是不固定的,当两个不同的文档使用同样的名称描述两个不同类型的元素的时候,就会发生命名冲突。
- 命名空间的语法: <hwx : name xmlns:hwx="www.aaa.com/">
- 元素和属性都可以应用命名空间
12.Schema和DTD的关系
- XML Schema 是基于 XML 的 DTD 替代者。
- DTD的局限性:
- DTD不遵守XML语法
- DTD数据类型有限(与数据库数据类型不一致)
- DTD不可扩展
- DTD不支持命名空间
- Schema特性:
- Schema基于XML语法
- Schema可以用能处理XML文档的工具处理
- Schema大大扩充了数据类型,可以自定义数据类型
- Schema支持元素的继承
- Schema支持属性组
13.Schema
什么是Schema?
Schema是用一套预先规定好的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。
<schema> 元素是每一个 XML Schema 的根元素。简易元素指那些只包含文本的元素,它不会包含任何其他的元素或属性。
定义简易元素的语法:<xs:element name="xxx" type="yyy"/>
简易元素可拥有指定的默认值或固定值。当没有其他的值被规定时,默认值就会自动分配给元素。
所有的属性均作为简易类型来声明。
简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。
定义属性的语法是:<xs:attribute name="xxx" type="yyy"/>
属性可拥有指定的默认值或固定值。当没有其他的值被规定时,默认值就会自动分配给元素。
在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:<xs:attribute name="lang" type="xs:string" use="required"/>
未完待续...