15、
<!ELEMENT 聯系人(姓名, EMAIL)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
如果我們使用逗號“,”來分隔兩個子元素,那麼XML文件中,元素“姓名”就必須出現在元素“EMAIL”前面。反之,可以無序。
16、XML正則表達式的匹配原則不允許循環邏輯。所以,OR的意思是或者選這個或者選那個,但不能兩個都選,也不能兩個都不選。
17、注意:在一個組中,只允許使用一種連接符(例如“,”或“|”)。因此,象下面這樣定義的DTD是不合法的:
<!ELEMENT 聯系人(姓名,電話|EMAIL)>
要想使用多種連接符,只有通過創建子組的方式,使用
<!ELEMENT 聯系人(姓名,(電話|EMAIL))>
前面我們已經介紹了所有可能用到的子元素的排列狀況。不過,還有一種情況沒有說,那就是,一個元素中不包含任何子元素,也不包含純文本。
對於這種情況,我們可以定義一個空標記。當然,定義這樣一個標記很簡單,你只需要使用關鍵字EMPTY就可以了,例如:
<!ELEMENT HR EMPTY>
這樣,在你的XML文件中,就可以使用一個空元素<HR/>。
18、IDREF類型允許一個元素的屬性使用文件中的另一個元素,方法就是把那個元素的ID標識值作為該屬性的取值。
19、參數實體專門用在DTD中。定義方式是:
<!ENTITY % 實體名 "實體內容">
或: schema
<!ENTITY % 實體名 SYSTEM "外部文件名">
引用方式為:
%實體名;
20、使用參數實體,可以方便元素和屬性的聲明。例如:
<!ENTITY % TAG_NAMES "姓名 | EMAIL | 電話 | 地址">
<!ELEMENT 個人聯系信息 (%TAG_NAMES; | 生日)>
<!ELEMENT 客戶聯系信息 (%TAG_NAMES; | 公司名)>
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樣式)。