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

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

  15、

  

  

  

  如果我們使用逗號“,”來分隔兩個子元素,那麼XML檔案中,元素“姓名”就必須出現在元素“EMAIL”前面。反之,可以無序。

  16、XML正規表示式的匹配原則不允許迴圈邏輯。所以,OR的意思是或者選這個或者選那個,但不能兩個都選,也不能兩個都不選。

  17、注意:在一個組中,只允許使用一種連線符(例如“,”或“|”)。因此,象下面這樣定義的DTD是不合法的:

   

  要想使用多種連線符,只有透過建立子組的方式,使用

   

  前面我們已經介紹了所有可能用到的子元素的排列狀況。不過,還有一種情況沒有說,那就是,一個元素中不包含任何子元素,也不包含純文字。

  對於這種情況,我們可以定義一個空標記。當然,定義這樣一個標記很簡單,你只需要使用關鍵字EMPTY就可以了,例如:

   

  這樣,在你的XML檔案中,就可以使用一個空元素


  18、IDREF型別允許一個元素的屬性使用檔案中的另一個元素,方法就是把那個元素的ID標識值作為該屬性的取值。

  19、引數實體專門用在DTD中。定義方式是:

   

  或: schema

   

  引用方式為:

  %實體名; 

  20、使用引數實體,可以方便元素和屬性的宣告。例如:

  

  

   

  21、dt:type

  dt:type指定所宣告屬性的資料型別,它除了支援DTD中包含的全部十大資料型別外,還支援一些擴充套件屬性,在下一小節會詳細講述。

  Schema中的十個基本屬性與DTD中屬性的對應關係請見下表:

  Schema中基本型別    DTD中資料型別 

  string          #PCDATA 

  enumeration       ENUMERATED 

  id            ID 

  idref          IDREF 

  idrefs          IDREFS 

  nmtoken         NMTOKEN 

  nmtokens         NMTOKENS 

  entity          ENTITY 

  entities         EMTITIES 

  notation         NOTATION 

  注意,當dt:type取值為"enumeration"時,後面的dt:value必須列出所有可能的取值。

  22、attribute實際上是對該Schema中AttributeType宣告的引用,而具體引用什麼屬性型別,

  關鍵就要靠type屬性了。type唯一指定了要引用的屬性型別,

  因此其取值必須同某個AttributeType元素中name屬性的取值嚴格一致。

  其它兩個屬性與AttributeType中相應屬性的含義相同,

  default指定該屬性型別的預設取值,

  required指定該屬性對於引用它的元素是否是必須的。

  如果和同一個屬性相對應的AttributeType和attribute中都對default和required給出了定義,

  則在attribute中的取值具有更高的優先順序。

  23、XML較之HTML最根本的差別在於XML是定義置標語言的元語言,

  而HTML僅僅是由SGML元置標語言定義的一個例項語言。利用XML元置標語言,

  定義各種各樣的XML例項的活動是相當開放的。針對不同的應用方向,

  每設計一個XML的DTD,一種新的置標語言便隨之誕生。

  在各種各樣XML例項置標語言如雨後春筍般不斷湧現的過程中,

  將會產生這樣一種應用需求,即在一個XML文件中,包含由多個DTD描述的元素。

  這個想法顯然是達到“物盡其用”的一個好辦法,它幫助我們最大程度地利用了現有的資源,

  正所謂“海納百川,有容乃大”。

  24、CSS和XSL均屬於樣式單的一種,都可以用來設定文件的外觀。那麼,它們有什麼區別呢?

  比較起來,它們主要有以下幾個大的不同: 

  用途不同

  CSS最早是針對於HTML提出的,後來又將其應用於XML之中,

  它既可以為HTML文件中的各個成分設定樣式,又可以為XML中的成分設定樣式。

  XSL是專門針對XML提出的,它不能處理HTML文件。但它有一個CSS無法達到的功能,

  即用一個命令列將一個XML文件轉換為另一個文件並存檔。 

  處理結果不同

  XSL採用的是一種轉換的思想,它將一種不含顯示資訊的XML文件轉換為另一種可以用某種瀏覽器瀏覽的文件,

  轉換後的輸出碼或者存為一個新的文件,或者暫存於記憶體中,但都不修改原始碼。而CSS則沒有任何轉換動作,

  只是針對結構文件中的各個成分,依照樣式規定一一設定外觀式樣,再由瀏覽器依據這些式樣顯示文件,在整個過程中沒有任何新碼產生。 

  表現能力不同

  在XSL中定義的90%的樣式規定,實際上在CSS中都有定義。但仍然有一些效果是CSS無法描述的,

  必須使用XSL不可。這些功能包括文字的置換,例如將一個美國的時間表示格式轉換為一箇中國的時間表示格式;

  根據文字內容決定顯示方式,例如將60分以上的分數用黑色顯示,60分以下的分數用紅色顯示;

  將文件中的成分按照某一個子成分的值進行排序,例如將商品按售價進行排序。

  此外,還有對於超連結的支援,對於FRAME的支援,對於某些語種文字從上到下,

  行從右到左的排列格式的支援等,都是XSL所獨有的。 

  語法不同

  XSL是根據XML的語法進行定義的,實際上又是XML的一種應用。而CSS的語法自成體系,

  且比較簡單,易學易用。 

  綜上所述,一個XML文件的顯示方式可以歸納為三種:即利用CSS顯示,

  利用XSL轉化為FO顯示,以及利用XSL轉化為HTML文件顯示(這個HTML文件中可包含CSS樣式)。


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

相關文章