曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
一個元素不能具有超過一個的ID 類型的屬性。
一般來說,ID 屬性的存在只是為了處理數據的程序方便。在許多情況下,除了ID 屬性值外,多個元素可能會是一樣的,如
果以可以預見的方式來選取ID 的話,程序就可以列舉出文檔中所有不同類型的元素或同一類型的不同元素。
ID 類型屬性與#FIXED 類型的屬性不兼容。ID 類型屬性不能同時具有#FIXED 類型的屬性,因為#FIXED 類型的屬性僅能擁有
一個單一的值,而每個ID 類型屬性都具有不同的值。大部分ID 屬性使用#REQUIRED 值。如清單10-1 例所示:
清單10-1:required ID 屬性類型
<?xml version="1.0" standa lone="yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (P*)>
<!ELEMENT P (#PCDATA)>
<!ATTLIST P PNUMBER ID #REQUIRED>
]>
<DOCUMENT>
<P PNUMBER="p1">The quick brown fox</P>
<P PNUMBER="p2" >The quick brown fox</P>
XML 實用大全
第 303 頁
</DOCUMENT>
10.5.6 IDREF 屬性類型
IDREF 類型的屬性值為文檔中另一個元素的ID。例如,清單10-2 表明IDREF 和ID 屬性用于子元素和父元素之間的連結。
清單10-2:family.xml
<?xml version= "1.0" standalone= "yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (PERSON*)>
<!ELEMENT PERSON (#PCDATA)>
<!ATTLIST PERSON PNUMBER ID #REQUIRED>
<!ATTLIST PERSON FATHER IDREF #IMPLIED>
<!ATTLIST PERSON MOTHER IDREF #IMPLIED>
]>
<DOCUMENT>
<PERSON PNUMBER= "a1" >Susan</PERSON>
<PERSON PNUMBER= "a2" >Jack</PERSON>
<PERSON PNUMBER= "a3" MOTHER= "a1" FATHER= "a2" >Chelsea</PERSON>
<PERSON PNUMBER= "a4" MOTHER= "a1" FATHER= "a2" >David</PERSON>
</DOCUMENT>
當在文檔結構樹上并不沖突的兩個元素之間需要建立連結時,通常使用這種并不普遍但很重要的類型。在清單10-2 中,每
個子元素都有FATHER 和MOTHER 屬性給出,這兩個屬性包含的是對應的ID 屬性。
在清單10-2 中,無法簡潔地使用IDREF 建立父元素到子元素之間的鏈接,這是因為每個父元素都具有不確定的子元素數目。
解決的方法就是,可以把所有同一父元素的子元素組成FAMILY 元素,然后鏈接到FAMILY 上。即使使用這種方法,當面對半
同屬(共享唯一一個父元素)的元素時,也不好用。簡而言之,IDREF 適用于多對一的關系,不適合一對多的關系。
10.5.7 ENTITY 屬性類型
ENTITY 類型的屬性提供把外部二進制數據和外部不可析實體鏈接到文檔中的能力。ENTITY 屬性值為DTD 中聲明的不可析通
用實體名,該實體名鏈接到外部實際數據。
XML 實用大全
第 304 頁
經典的ENTITY 屬性的例子就是圖像。圖像由另一URL 處可用的二進制數據組成。假如XML 瀏覽器支持ENTITY 類型屬性,在
DTD 中按如下方式聲明,就可在XML 文檔中包括一幅枷瘢?/p>
<!ELEMENT IMAGE EMPTY>
<!ATTLIST IMAGE SOURCE ENTITY #REQUIRED>
<!ENTITY LOGO SYSTEM "logo.gif">
然后在期望圖像出現在文檔中的位置處,就可插入如下的IMAG 標記:
<IMAGE SOURCE="LOGO"/>
所有XML 瀏覽器自動識別的過程并不是在變魔術,這僅僅是一種簡單的技術,瀏覽器和其余應用程序可能采用也可能不采用
這種技術在文檔中嵌入非XML 數據。
這種技術在第11 章 “嵌入非XML 數據” 中有更深入的探討。
10.5.8 ENTITIES 屬性類型
ENTITIES 屬性類型幾乎就是ENTITY 的復數形式。若干由空格分隔的不可析實體名組成ENTITIES 類型屬性的值。每一實體
名指向一個外部非XML 數據資源。這種類型屬性的用途之一為:使不同圖片之間的切換變得光滑平順,如下例所示:
<!ELEMENT SLIDESHOW EMPTY>
<!ATTLIST SLIDESHOW SOURCES ENTITIES #REQUIRED>
<!ENTITY PIC1 SYSTEM "cat.gif">
<!ENTITY PIC2 SYSTEM "dog.gif">
<!ENTITY PIC3 SYSTEM "cow.gif">
然后在文檔中希望顯示圖片的位置上插入如下標記:
<SLIDESHOW SOURCES="PIC1 PIC2 PIC3">
再一次聲明,這不是所有(或任意)XML 瀏覽器可以自動識別的通用格式;僅僅是某些瀏覽器和其余的應用程序可能采用也
可能不采用的在文檔中嵌入非XML 數據的方法而已。
10.5.9 NOTATION 屬性類型
NOTATION 屬性類型指定屬性值為DTD 中聲明的記號名。這一屬性的缺省值也必須為DTD 中聲明的記號名。在下一章中介紹
記號的詳細內容。簡單地說,記號可標識非XML 數據的格式;例如為不可析實體指定一幫助程序。
第11 章 “嵌入非XML 格式數據”講述了這方面的內容。
XML 實用大全
第 305 頁
例如,SOUND 元素的PLAYER 屬性具有NOTATION 類型和缺省值MP,從而標識非XML 數據的格式,記號MP 表示一個特殊類型
的聲音文件:
<!ATTLIST SOUND PLAYER NOTATION (MP) #REQUIRED>
<!NOTATION MP SYSTEM "mplay32.exe">
也可提供不同記號的選擇。這樣做的用法之一是為不同的平臺指定不同的幫助應用程序。瀏覽器可從中選取一可用的值。這
種情況下,NOTATION 關鍵詞后緊跟一對圓括號,括號內包含由豎直線分隔的、許可的記號名列表。例如:
<!NOTATION MP SYSTEM "mplay32.exe">
<!NOTATION ST SYSTEM "soundtool">
<!NOTATION SM SYSTEM "Sound Machine">
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(88)