- Java核心技術·卷Ⅱ:高級特性(原書第10版)
- (美)凱S.霍斯特曼
- 975字
- 2020-10-30 18:10:47
3.1 XML概述
在卷Ⅰ第13章中,你已經看見過用屬性文件(property file)來描述程序配置。屬性文件包含了一組名/值對,例如:

你可以用Properties類在單個方法調用中讀入這樣的屬性文件。這是一個很好的特性,但這還不夠。在許多情況下,想要描述的信息的結構比較復雜,屬性文件不能很方便地處理它。例如,對于下面例子中的fontname/fontsize項,使用以下的單一項將更符合面向對象的要求:

但是,這時對字體描述的解析就變得很討厭了,必須確定字體名在何處結束,字體大小在何處開始。
屬性文件采用的是一種單一的平面層次結構。你常常會看到程序員用如下的鍵名來努力解決這種局限性:

屬性文件格式的另一個缺點是要求鍵是唯一的。如果要存放一個值序列,則需要另一個變通方法,例如:

XML格式解決了這些問題,因為它能夠表示層次結構,這比屬性文件的平面表結構更靈活。
描述程序配置的XML文件可能會像這樣:

XML格式能夠表達層次結構,并且重復的元素不會被曲解。
正如上面看到的,XML文件的格式非常直觀,它與HTML文件非常相似。這是有原因的,因為XML和HTML格式是古老的標準通用標記語言(Standard Generalized Markup Language,SGML)的衍生語言。
SGML從20世紀70年代開始就用于描述復雜文件的結構。它的使用在一些要求對海量文獻進行持續維護的產業中取得了成功,特別是在飛機制造業中。但是,SGML相當復雜,所以它從未風行。造成SGML如此復雜的主要原因是SGML有兩個相互矛盾的目標。它既想要確保文檔能夠根據其文檔類型的規則來形成,又想要通過可以減少數據鍵入的快捷方式使數據項變得容易表示。XML設計成了一個用于因特網的SGML的簡化版本。和通常情況一樣,越簡單的東西越好,XML立即得到了長期以來一直在躲避SGML的用戶的熱情追捧。
注意:在http://www.xml.com/axml/axml.html處可以找到一個由Tim Bray注釋的XML標準的極佳版本。
盡管HTML和XML同宗同源,但是兩者之間存在著重要的區別:
·與HTML不同,XML是大小寫敏感的。例如,<H1>和<h1>是不同的XML標簽。
·在HTML中,如果從上下文中可以分清哪里是段落或列表項的結尾,那么結束標簽(如</p>或</li>)就可以省略,而在XML中結束標簽絕對不能省略。
·在XML中,只有單個標簽而沒有相對應的結束標簽的元素必須以/結尾,比如<img src="coffeecup.png"/>。這樣,解析器就知道不需要查找</img>標簽了。
·在XML中,屬性值必須用引號括起來。在HTML中,引號是可有可無的。例如,<applet code="MyApplet.class" width=300 height=300>對HTML來說是合法的,但是對XML來說則是不合法的。在XML中,必須使用引號,比如,width= "300"。
·在HTML中,屬性名可以沒有值。例如,<input type="radio" name="language" value="Java" checked>。在XML中,所有屬性必須都有屬性值。比如,checked= "true"或checked="checked"。
- Implementing VMware Horizon 7(Second Edition)
- scikit-learn Cookbook
- 無代碼編程:用云表搭建企業數字化管理平臺
- Java開發入行真功夫
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- 軟件架構:Python語言實現
- Apache Mesos Essentials
- 硅谷Python工程師面試指南:數據結構、算法與系統設計
- Kotlin極簡教程
- Everyday Data Structures
- Practical Predictive Analytics
- 計算語言學導論
- Software-Defined Networking with OpenFlow(Second Edition)
- 3ds Max 2018從入門到精通
- Learning Alfresco Web Scripts