XML 指可扩展标记语言,被设计用来传输和存储数据。本文记录XML基础知识。
教程参考w3school。
简介 {#简介}
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
- XML 是没有任何行为的纯文本,仅编码保存数据
用途 {#用途}
- XML 把数据从 HTML 分离
- XML 简化数据共享
- XML 简化数据传输
- XML 简化平台的变更
XML 树结构 {#XML-树结构}
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。
-
XML 文档必须包含根元素。该元素是所有其他元素的父元素
-
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端
-
所有元素均可拥有子元素
实例 {#实例}
这段代码表示了具有如下元素框架的三本书。
语法规则 {#语法规则}
-
所有 XML 元素都须有关闭标签(声明不是XML元素,恰好他又不需要关闭)
-
XML 标签对大小写敏感,必须使用相同的大小写来编写打开标签和关闭标签:
- XML 必须正确地嵌套
- XML 文档必须有根元素
XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
- XML 的属性值须加引号
- 实体引用
在 XML 中,有 5 个预定义的实体引用:
| < | < | 小于 | |----|----|-----| | > | > | 大于 | | & | & | 和号 | | ' | ' | 单引号 | | " | " | 引号 |
- 注释
语法与 HTML 的语法很相似:
-
在 XML 中,空格会被保留
-
XML 以 LF 存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。
XML 元素 {#XML-元素}
XML 元素 {#XML-元素-2}
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
XML 命名规则 {#XML-命名规则}
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 "xml"(或者 XML、Xml)开始
- 名称不能包含空格
最佳命名习惯 {#最佳命名习惯}
-
使名称具有描述性。使用下划线的名称也很不错。
-
名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。
-
避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为你需要提取第一个单词。
-
避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。
-
避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。
XML 属性 {#XML-属性}
XML 元素可以在开始标签中包含属性,类似 HTML。属性 (Attribute) 提供关于元素的额外(附加)信息。
- XML 属性必须加引号,单引号和双引号均可使用。
或
XML 元素 vs. 属性 {#XML-元素-vs-属性}
上述代码表示了同样的信息,也就是说XML中,属性携带的信息量可以被子元素取代。没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。
XML属性的缺点 {#XML属性的缺点}
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展(为未来的变化)
- 属性难以阅读和维护
XML 验证 {#XML-验证}
拥有正确语法的 XML 被称为"形式良好"的 XML。通过 DTD 验证的 XML 是"合法"的 XML。
"形式良好"(Well Formed)的 XML 文档 {#“形式良好”(Well-Formed)的-XML-文档}
- XML 文档必须有根元素
- XML 文档必须有关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性必须加引号