XML 元素
XML 文件包含 XML 元素。
什麼是 XML 元素?
XML 元素是從(包括)元素的開始標籤到(包括)元素的結束標籤之間的所有內容。
<price>29.99</price>
元素可以包含
- text
- attributes
- 其他元素
- 或上述內容的混合
<bookstore>
<book category="children">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
在上面的例子中
<title>、<author>、<year> 和 <price> 具有文字內容,因為它們包含文字(如 29.99)。
<bookstore> 和 <book> 具有元素內容,因為它們包含元素。
<book> 具有一個屬性 (category="children")。
空 XML 元素
沒有內容(content)的元素稱為空元素。
在 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> | 所有字母大寫 |
Snake case (蛇形命名法) | <first_name> | 下劃線分隔單詞(在 SQL 資料庫中常用) |
Pascal case (帕斯卡命名法) | <FirstName> | 每個單詞的首字母大寫(C 程式設計師常用) |
Camel case (駝峰命名法) | <firstName> | 除了第一個單詞外,每個單詞的首字母大寫(JavaScript 中常用) |
提示! 選擇您的命名風格,並保持一致!
XML 文件通常有相應的資料庫。一種常見的做法是為 XML 元素使用資料庫的命名規則。
XML 元素是可擴充套件的
XML 元素可以擴充套件以攜帶更多資訊。
檢視以下 XML 示例
<note>
<to>Tove</to>
<from>Jani</from>
<body>Don't forget me this weekend!</body>
</note>
讓我們設想我們建立了一個應用程式,它從 XML 文件中提取 <to>、<from> 和 <body> 元素來生成以下輸出
To: Tove
From: Jani
這個週末別忘了我!
假設 XML 文件的作者向其中添加了一些額外資訊
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
應用程式應該會中斷或崩潰嗎?
不。應用程式仍然應該能夠找到 XML 文件中的 <to>、<from> 和 <body> 元素,併產生相同的輸出。
這是 XML 的優點之一。它可以在不破壞應用程式的情況下進行擴充套件。