XML初學進階學習筆記(1)(轉)

amyz發表於2007-08-12
XML初學進階學習筆記(1)(轉)[@more@]

  簡體中文碼:GB2312

  繁體中文碼:BIG5

  西歐字元: UTF-8

  1、一般實體

  我們前面說到的那個信件署名就是一般實體。定義一般實體的格式如下: 

  

  關於剛才的信件署名的實體定義如下:

  

  "張三

  某網路公司銷售部門

  北京市海淀區中關村88號,100000"〉 

  另外,你也可以指定一個實體代替一個外部檔案的內容,此時要使用SYSTEM這個關鍵字。例如:

  

  SYSTEM ""〉 

  在這個例子中,XML處理器將用指定檔案的內容來替換實體指示。

  2、引數實體 

  與一般實體相同,引數實體既可以是內部的也可以是外部的。不過,引數實體只用在DTD中。

  引數實體的格式與一般實體很類似,只不過中間要加上“%”符。

  

  3、實體的使用包括兩部分:實體宣告和實體引用。 

  4、實體宣告 

  對於實體的宣告應該放在檔案型別DOCTYPE中。DOCTYPE一般放在檔案頭(即XML宣告和DTD)之後,

  XML元素之前。這樣一來,XML檔案就變為下面的形式:

  

  nbsp;檔案根元素名 [ 

  實體宣告部分

  ]>

  

  具體資料內容

  檔案根元素名>

  

  5、實體引用 

  說到實體引用,大家可能想起前面我們曾用“  簡而言之,實體引用指的是引用一個在實體宣告中已經宣告過的一個實體。實體引用的形式很簡單:

  &實體名; 

  6、實體引用有以下幾點規則一定要注意: 

  在引用XML實體之前,必須已經在XML檔案中對此實體進行過宣告; 

  在實體引用中不能出現空格。也就是說,& lettersign;和&letterhead ;的用法都會引起錯誤。 

  儘管在一個實體中可以再引用其它實體,但是不能出現迴圈引用。也就是說,一個實體不能引用它自己;

  同樣,也不能出現實體A引用實體B,然後實體B再反過來引用實體A的情況。 

  實體引用不能在DOCTYPE宣告中出現。 

  實體引用的文字必須是形式良好的XML。 

  同樣,引數實體的引用與一般實體的引用大同小異,只是要把實體前的符號&換為%就可以了,形式是:

  %實體名;

  

  7、實體引用不僅可以出現在字元資料中,還可以出現在標記的屬性中。例如下面這個例子:

   

  如果在屬性中出現實體引用,不但要遵守前面所述的實體引用的種種規則,還要注意以下兩點: 

  在標記屬性中不能引用一個外部實體。 

  引用的文字中不能出現字元“

  透過這一節的講述,想必大家已然瞭解:實體主要是用來代替字元資料的,它可以節省大量的錄入工作。

  8、使用外部DTD時,要在DOCTYPE中使用關鍵字SYSTEM。實際上,SYSTEM不是引用外部DTD的唯一方法,

  這個關鍵字主要用於引用一個作者或組織所編寫的眾多XML檔案中通用的DTD。還存在一種外部DTD,

  它是一個由權威機構制訂的,提供給特定行業或公眾使用的DTD。因此,另一個引用外部DTD的辦法是使用關鍵字PUBLIC,

  引用這一類公開給公眾使用的DTD。

  當使用關鍵字PUBLIC進行引用時,這個外部DTD還需要得到一個標識名。引用公共DTD的形式為:

  nbsp;根元素 PUBLIC "DTD名稱" "外部DTD的URL">

  9、這個DTD標識的命名規則和XML檔案的命名規則稍有不同。具體地說,DTD名稱只能包含字母、

  數字、空格和下面的符號:_%$#@()+:=/!*;?。同時,DTD名稱還必須符合一些標準的規定。

  例如,ISO標準的DTD以“ISO”三個字母開頭;被改進的非ISO標準的DTD以加號“+”開頭;未被改進的非ISO標準的DTD以減號“-”開頭。

  無論是哪一種情況,開始部分後面都跟著兩個斜槓“//”及DTD所有者的名稱。在這個名稱之後又是兩個斜槓“//”,

  再然後是DTD所描述的檔案的型別。最後,在又一對斜槓之後是語言的種類(參見ISO 639)。例如下面這個公用DTD的引用:

  nbsp;聯絡人列表 PUBLIC "-//Luna Dong//Contact Data//CN"

  ""> 

  10、除了根元素外,在定義其它元素時使用關鍵字ANY都是不好的習慣。一般來說,在寫一個XML檔案時需要嚴格遵循DTD的規則,

  這時,一個定義明確的DTD,雖然表面上似乎充滿了條條框框,但實際上會使你在書寫XML檔案時有規可循,

  反而方便了你的工作和語法分析器的工作。相反,一個在元素定義中充滿了ANY的DTD,反而可能會搞得你不知所措,一頭霧水。

  11、在定義元素時,ETD的順序是無關緊要的。因此

    

  

  

  和

  

  

    

  所定義的檔案結構是完全相同的。 

  12、還有一點要注意,不能對不同的元素使用相同的元素名,即便這些元素的內容、包含的子元素不同也不行,

  因為它只會引起檔案各個元素的混淆,使檔案的可讀性大打折扣。例如:

  

  

  

  

  

  在這個例子中,對“聯絡人”的重複定義,會引起錯誤。

13、最後再次強調一下元素的命名。元素名的第一個字母必須是字母、或下劃線(_)、或冒號(:),

  後跟字母、數字、句號(.)、冒號、下劃線、連結號(-)的組合,並且不能包含空白符,不能以“xml”開頭。

  另外,儘管元素的第一個字母使用冒號是合法的,但最好避免這樣做,因為它會引起混淆。再有需要注意的是,

  儘管XML1.0標準允許使用任何長度的檔名,但是實際的XML處理器常常會限制標記名的長度。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950301/,如需轉載,請註明出處,否則將追究法律責任。

相關文章