• 什么是 XML?
    • XML 指可扩展标记语言
    • XML 被设计用来传输和存储数据。
    • XML 标签没有被预定义。您需要自行定义标签。
    • XML 被设计为具有自我描述性。
    • XML 是 W3C 的推荐标准
  • XML 与 HTML 的主要差异
    • XML 不是 HTML 的替代。
    • XML 和 HTML 为不同的目的而设计:
      • XML 被设计为传输和存储数据,其焦点是数据的内容。
      • HTML 被设计用来显示数据,其焦点是数据的外观。
    • HTML 旨在显示信息,而 XML 旨在传输信息。
  • 没有任何行为的 XML
    • XML 是不作为的。也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
  • XML 仅仅是纯文本
    • XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。
    • 不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。
  • 通过 XML 您可以发明自己的标签
    • 上例中的标签没有在任何 XML 标准中定义过(比如 <to><from>)。这些标签是由文档的创作者发明的。
    • 这是因为 XML 没有预定义的标签。
    • 在 HTML 中使用的标签(以及 HTML 的结构)是预定义的。HTML 文档只使用在 HTML 标准中定义过的标签(比如 <p> <h1> 等等)。
    • XML 允许创作者定义自己的标签和自己的文档结构。
  • XML 不是对 HTML 的替代
    • XML 是对 HTML 的补充。
    • XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。
    • 对 XML 最好的描述是:
      • XML 是独立于软件和硬件的信息传输工具。

XML 用途

  • XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。

  • XML 把数据从 HTML 分离
    • 如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。
    • 通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。
    • 通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。
  • XML 简化数据共享
    • 在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。
    • XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。
    • 这让创建不同应用程序可以共享的数据变得更加容易。
  • XML 简化数据传输
    • 通过 XML,可以在不兼容的系统之间轻松地交换数据。
    • 对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。
    • 由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。
  • XML 简化平台的变更
    • 升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容的数据经常会丢失。
    • XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。
  • XML 使您的数据更有用
    • 由于 XML 独立于硬件、软件以及应用程序,XML 使您的数据更可用,也更有用。
    • 不同的应用程序都能够访问您的数据,不仅仅在 HTML 页中,也可以从 XML 数据源中进行访问。
    • 通过 XML,您的数据可供各种阅读设备使用(手持的计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。
  • XML 用于创建新的 Internet 语言
    • 很多新的 Internet 语言是通过 XML 创建的:
    • 其中的例子包括:
      • XHTML - 最新的 HTML 版本
      • WSDL - 用于描述可用的 web service
      • WAP 和 WML - 用于手持设备的标记语言
      • RSS - 用于 RSS feed 的语言
      • RDF 和 OWL - 用于描述资源和本体
      • SMIL - 用于描述针针对 web 的多媒体

XML 树结构

  • XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。

  • XML 使用简单的具有自我描述性的语法:
    1
    2
    3
    4
    5
    6
    7
    
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <note>
      <to>George</to>
      <from>John</from>
      <heading>Reminder</heading>
      <body>Don't forget the meeting!</body>
      </note>  
    
    • 第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。
    • 下一行描述文档的根元素(像在说:“本文档是一个便签”):<note>
    • 接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):
    • 最后一行定义根元素的结尾:</note>
    • 从本例可以设想,该 XML 文档包含了 John 给 George 的一张便签。
  • XML 文档形成一种树结构
    • XML 文档必须包含根元素。该元素是所有其他元素的父元素。
    • XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端
    • 所有元素均可拥有子元素:
      1
      2
      3
      4
      5
      
        <root>
          <child>
            <subchild>.....</subchild>
          </child>
        </root>
      
    • 父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。
    • 所有元素均可拥有文本内容和属性(类似 HTML 中)。
  • 示例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
      <bookstore>
      <book category="COOKING">
        <title lang="en">Everyday Italian</title> 
        <author>Giada De Laurentiis</author> 
        <year>2005</year> 
        <price>30.00</price> 
      </book>
      <book category="CHILDREN">
        <title lang="en">Harry Potter</title> 
        <author>J K. Rowling</author> 
        <year>2005</year> 
        <price>29.99</price> 
      </book>
      <book category="WEB">
        <title lang="en">Learning XML</title> 
        <author>Erik T. Ray</author> 
        <year>2003</year> 
        <price>39.95</price> 
      </book>
      </bookstore>
    
    • 例子中的根元素是 <bookstore>。文档中的所有 <book> 元素都被包含在 <bookstore> 中。
    • <book> 元素有 4 个子元素:<title>< author><year><price>