XML 元素

XML 文檔包含 XML 元素。

什么是 XML 元素?

XML 元素指的是從(包括)元素的開始標簽到(包括)元素的結束標記的所有內容。

<price>29.99</price>

一個元素可以包含:

  • 文本
  • 屬性
  • 其他元素
  • 或以上的混合
<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>
</bookstore>

在上面的例子中:

<title>、<author>、<year> 和 <price> 等元素擁有文本內容,因為它們包含文本(如 29.99)。

<bookstore> 和 <book> 擁有元素內容,因為它們包含元素。

<book> 有一個屬性 (例如:category="兒童")。

空 XML 元素

沒有內容的元素被稱為空元素。

在 XML 中,您可以像這樣指示空元素:

<element></element>

您還可以使用所謂的自關閉標簽:

<element />

這兩種形式在 XML 軟件(閱讀器、解析器、瀏覽器)中產生相同的結果。

提示:空元素也可以有屬性。

XML 命名規則

XML 元素必須遵循以下命名規則:

  • 元素名稱區分大小寫
  • 元素名稱必須以字母或下劃線開頭
  • 元素名稱不能以字母 xml(或 XML、Xml 等)開頭
  • 元素名稱可以包含字母、數字、連字符、下劃線和句點
  • 元素名稱不能包含空格

可使用任何名稱,沒有保留字。(xml 除外)。

最佳命名實踐

名稱應該有描述性,比如:<person>、<firstname>、<lastname>。

名稱應該簡短,比如:<book_title>,而不是這樣:<the_title_of_the_book>。

避免 "-" 字符。如果您按照這樣的方式進行命名:"first-name",一些軟件會認為您想要從 "first" 中減去 "name"。

避免 "." 字符。如果您按照這樣的方式進行命名:"first.name",一些軟件會認為 "name" 是對象 "first" 的屬性。

避免 ":" 字符。冒號會被轉換為命名空間來使用(稍后介紹)。

非英語的字母比如 éòá 也是合法的 XML 元素名,不過需要留意當軟件開發商不支持這些字符時可能出現的問題。

命名約定

XML 元素的一些常用命名約定:

樣式 例子 描述
小寫 <firstname> 所有字母小寫
大寫 <FIRSTNAME> 所有字母大寫
蛇形 <first_name> 下劃線分隔單詞(常用于 SQL 數據庫)
帕斯卡 <FirstName> 每個單詞的第一個字母大寫(C 程序員常用)
駝峰 <firstName> 除第一個之外的每個單詞的首字母大寫(常用于 JavaScript)

提示:選定您的命名風格,并保持一致!

XML 文檔經常有一個對應的數據庫,其中的字段會對應 XML 文檔中的元素。

有一個實用的經驗:使用數據庫的名稱規則來命名 XML 文檔中的元素。

XML 元素是可擴展的

XML 元素是可擴展的,以攜帶更多的信息。

請看下面這個 XML 例子:

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

讓我們設想一下,我們創建了一個應用程序,可將 <to>、<from> 以及 <body> 元素提取出來,并產生以下的輸出:

MESSAGE
To: George
From: John
Don't forget the meeting!

想象一下,之后這個 XML 文檔作者又向這個文檔添加了一些額外的信息:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

那么這個應用程序會中斷或崩潰嗎?

不會。這個應用程序仍然可以找到 XML 文檔中的 <to>、<from> 以及 <body> 元素,并產生同樣的輸出。

XML 的優勢之一,就是可以經常在不中斷應用程序的情況進行擴展。