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 的優勢之一,就是可以經常在不中斷應用程序的情況進行擴展。