- Java核心技術·卷Ⅱ:高級特性(原書第10版)
- (美)凱S.霍斯特曼
- 1177字
- 2020-10-30 18:10:47
3.1.1 XML文檔的結構
XML文檔應當以一個文檔頭開始,例如:

或者

嚴格來說,文檔頭是可選的,但是強烈推薦你使用文檔頭。
注意:因為建立SGML是為了處理真正的文檔,因此XML文件被稱為文檔,盡管許多XML文件是用來描述通常不被稱作文檔的數據集的。
文檔頭之后通常是文檔類型定義(Document Type Definition,DTD),例如:

文檔類型定義是確保文檔正確的一個重要機制,但是它不是必需的。我們將在本章的后面討論這個問題。
最后,XML文檔的正文包含根元素,根元素包含其他元素。例如:

元素可以有子元素(child element)、文本或兩者皆有。在上述例子中,font元素有兩個子元素,它們是name和size。name元素包含文本“Helvetica”。
提示:在設計XML文檔結構時,最好讓元素要么包含子元素,要么包含文本。換句話說,你應該避免下面的情況:

在XML規范中,這叫做混合式內容(mixed content)。在本章中,稍后你將會看到,如果避免了混合式內容,就可以簡化解析過程。
XML元素可以包含屬性,例如:

何時用元素,何時用屬性,在XML設計人員中存在一些分歧。例如,將font做如下描述:

似乎比下面的描述更簡單一些:

但是,屬性的靈活性要差很多。假設你想把單位添加到size的值中去,如果使用屬性,那么就必須把單位添加到屬性值中去:

嗨!現在必須對字符串“36 pt”進行解析,而這正是XML被設計用來避免的那種麻煩。而向size元素中添加一個屬性看起來會清晰得多:

一條常用的經驗法則是,屬性只應該用來修改值的解釋,而不是用來指定值。如果你發現自己陷入了爭論,在糾結于某個設置是否是對某個值的解釋所作的修改,那么你就應該對屬性說“不”,轉而使用元素,許多有用的文檔根本就不使用屬性。
注意:在HTML中,屬性的使用規則很簡單:凡是不顯示在網頁上的都是屬性。例如在下面的超鏈接中:

字符串Java Technology要在網頁上顯示,但是這個鏈接的URL并不是顯示頁面的一部分。然而,這個規則對于大多數XML并不那么管用,因為XML文件中的數據并非像通常意義那樣是讓人瀏覽的。
元素和文本是XML文檔“主要的支撐要素”,你可能還會遇到的其他一些標記,說明如下:
·字符引用(character reference)的形式是&#十進制值;或&#x十六進制值;。例如,字符é可以用下面兩種形式表示:

·實體引用(entity reference)的形式是&name;。下面這些實體引用:

都有預定義的含義:小于、大于、&、引號、省略號等字符。還可以在DTD中定義其他的實體引用。
·CDATA部分(CDATA Section)用<![CDATA[和]]>來限定其界限。它們是字符數據的一種特殊形式。你可以使用它們來囊括那些含有<、>、&之類字符的字符串,而不必將它們解釋為標記,例如:

CDATA部分不能包含字符串]]>。使用這一特性時要特別小心,因為它常用來當作將遺留數據偷偷納入XML文檔的一個后門。
·處理指令(processing instruction)是那些專門在處理XML文檔的應用程序中使用的指令,它們由<?和?>來限定其界限,例如:

每個XML都以一個處理指令開頭:

·注釋(comment)用<!-和-->限定其界限,例如:

注釋不應該含有字符串--。注釋只能是給文檔的讀者提供的信息,其中絕不應該含有隱藏的命令,命令應該是用處理指令來實現。
- Python數據分析入門與實戰
- 架構不再難(全5冊)
- 編寫整潔的Python代碼(第2版)
- Learn Programming in Python with Cody Jackson
- 深度學習:算法入門與Keras編程實踐
- PhpStorm Cookbook
- Flutter跨平臺開發入門與實戰
- Python算法指南:程序員經典算法分析與實現
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- INSTANT Silverlight 5 Animation
- 移動增值應用開發技術導論
- IPython Interactive Computing and Visualization Cookbook
- Python預測之美:數據分析與算法實戰(雙色)
- 從零開始學UI:概念解析、實戰提高、突破規則
- 數字媒體技術概論