XML 樹結構

XML 文檔形成了一種樹結構,它從“根部”開始,然后擴展到“枝葉”。

XML 樹結構

DOM 節點樹

XML 文檔實例

上圖代表這個 XML 中的書單:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="美食">
  <title lang="zh">雅舍談吃</title>
  <author>梁實秋</author>
  <press>江蘇文藝出版社</press>
  <year>2013</year>
  <price>35</price>
  <ISBN>9787539962771</ISBN>
</book>
<book category="兒童">
  <title lang="zh">了不起的狐貍爸爸</title>
  <author>羅爾德·達爾</author>
  <translator>代維</translator>
  <press>明天出版社</press>
  <year>2009</year>
  <price>10</price>
  <ISBN>9787533259563</ISBN>
</book>
<book category="文學">
  <title lang="zh">將熟悉變為陌生</title>
  <author>齊格蒙·鮑曼</author>
  <author>彼得·哈夫納</author>
  <translator>王立秋</translator>
  <press>南京大學出版社</press>
  <year>2023</year>
  <price>68</price>
  <ISBN>9787305269387</ISBN>
</book>
<book category="科學">
  <title lang="zh">你想飛嗎,像鳥一樣?</title>
  <author>理查德·道金斯</author>
  <author>亞娜·倫佐娃</author>
  <translator>高天羽</translator>
  <press>湖南科學技術出版社</press>
  <year>2023</year>
  <price>88</price>
  <ISBN>9787571019075</ISBN>
</book>
<book category="政治" cover="平裝">
  <title lang="zh">論美國的民主</title>
  <author>托克維爾</author>
  <translator>董果良</translator>
  <press>商務印書館</press>
  <year>1989</year>
  <price>60</price>
  <ISBN>9787100124553</ISBN>
</book>
</bookstore>

XML 樹結構

XML 文檔中的元素形成了一棵元素樹

這棵樹從根元素開始,并擴展到樹的子元素

XML 文檔必須包含根元素。該元素是所有其他元素的父元素。

所有元素都可以有子元素:

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

父、子以及同胞等術語用于描述元素之間的關系。

父元素擁有子元素。子元素也有父元素。相同層級上的子元素成為同胞(兄弟或姐妹)。

所有元素均可擁有文本內容(雅舍談吃)和屬性(category="美食"),類似 HTML 中那樣。

自描述的語法

XML 使用簡單的具有自我描述性的語法:

<?xml version="1.0" encoding="UTF-8"?>
<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):

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>

最后一行定義根元素的結尾:

</note>

從本例可以設想,該 XML 文檔包含了 John 給 George 的一張便簽。

XML 具有出色的自我描述性,你同意嗎?