DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML初學進階學習筆記(1)
XML初學進階學習筆記(1)
編輯:XML詳解     

簡體中文碼:GB2312

  繁體中文碼:BIG5

  西歐字符: UTF-8

  1、一般實體

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

  <!ENTITY 實體名 "文本內容"〉 

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

  <!ENTITY lettersign

  "張三

  某網絡公司銷售部門

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

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

  <!ENTITY lettersign

  SYSTEM "http://www.mydomain.com/lettersign.XML"〉 

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

  2、參數實體 

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

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

  <!ENTITY % 實體名 "文本內容"〉 

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

  4、實體聲明 

  對於實體的聲明應該放在文件類型DOCTYPE中。DOCTYPE一般放在文件頭(即XML聲明和DTD)之後,

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

  <?XML version="1.0"?>

  <!DOCTYPE 文件根元素名 [ 

  實體聲明部分

  ]>

  <文件根元素名>

  具體數據內容

  </文件根元素名>

  

  5、實體引用 

  說到實體引用,大家可能想起前面我們曾用“<”代表字符“〈”。不錯,這就是一個實體引用。

  簡而言之,實體引用指的是引用一個在實體聲明中已經聲明過的一個實體。實體引用的形式很簡單:

&實體名; 

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

  在引用XML實體之前,必須已經在XML文件中對此實體進行過聲明; 

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

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

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

  實體引用不能在DOCTYPE聲明中出現。 

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

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

  %實體名;

  

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

  <聯系人 公司=“B公司” 地址=“&B公司地址;”> 

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

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

  引用的文本中不能出現字符“<”,否則替換後就不再是一個“形式良好的”XML文件了。 

  通過這一節的講述,想必大家已然了解:實體主要是用來代替字符數據的,它可以節省大量的錄入工作。

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

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

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

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

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

  <!DOCTYPE 根元素 PUBLIC "DTD名稱" "外部DTD的URL">

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

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

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

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

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

  <!DOCTYPE 聯系人列表 PUBLIC "-//Luna Dong//Contact Data//CN"

  "http://www.mydomain.com/dtds/fclml.dtd"> 

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

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

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

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

  <!ELEMENT 姓名(#PCDATA)>  

  <!ELEMENT 聯系人列表 ANY>

  <!ELEMENT 聯系人(姓名)>

  和

  <!ELEMENT 聯系人列表 ANY>

  <!ELEMENT 聯系人(姓名)>

  <!ELEMENT 姓名(#PCDATA)>  

  所定義的文件結構是完全相同的。 

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

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

  <!ELEMENT 聯系人列表 ANY>

  <!ELEMENT 聯系人(姓名)>

  <!ELEMENT 聯系人(EMAIL)>

  <!ELEMENT 姓名(#PCDATA)>

  <!ELEMENT EMAIL(#PCDATA)>

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

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

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

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

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



 

 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved