曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
]>
<DOCUMENT>
<TITLE>A Very Boring Document</TITLE>
&SIGNATURE;
</DOCUMENT>
XML 實用大全
第 293 頁
9.8 本章小結
從本章中,可了解如何從內部和外部實體開始創(chuàng)建XML 文檔。詳細地說,學習了以下內容:
• 實體就是組成文檔的物理存儲單元。
• 實體內容為:結構完整的XML 文檔、其他形式的文本和二進制數據。
• 內部實體完全在文檔內部定義,外部實體可引入通過URL 定位的不同資源的內容。
• 通用實體引用具有“&name;”的形式,通常用于文檔的內容中。
• 內部通用實體引用由實體聲明中給定的實體值所替換。
• 外部通用實體引用由URL 定位的數據所替換,該URL 為實體聲明中SYSTEM 關鍵詞后的內容規(guī)定。
• 內部參數實體引用具有“%name;”的格式,只在DTD 中使用。
• 可用外部參數實體引用和不同的DTD。
• 外部實體引用提供創(chuàng)建大型復雜文檔的能力。
• XML 標準一致性的第三層含義:結構完整,但不合法。不合法的原因在于DTD 不完整或文檔不滿足DTD 的約束
條件。
當文檔使用了屬性的時候,必須在DTD 中對屬性加以聲明。下一章講述如何在DTD 中聲明屬性,以及如何將約束條件附加于
屬性值進行限制。
XML 實用大全
第 294 頁
第10 章 DTDs 中的屬性聲明
一些XML 元素具有屬性。屬性包含應用程序使用的信息。屬性僅在程序對元素進行讀、寫操作時,提供元素的額外信息(如
ID 號等),對于人類讀、寫元素來說是毫無意義的。在本章中學習各種屬性類型和如何在DTD 中聲明屬性。
本章內容如下:
• 什么是屬性?
• 如何在DTD 中聲明屬性
• 如何聲明多個屬性
• 如何指定屬性的缺省值
• 屬性類型
• 預定義屬性
• 基于屬性的棒球比賽統(tǒng)計數據的DTD
10.1 什么是屬性?
在第3 章曾經討論過開始標記和空標記可包含由等號“=”分割開的成對的屬性名和屬性值。例如:
<GREETING LANGUAGE= "English">
Hello XML!
<MOVIE SOURCE= "WavingHand.mov" />
</GREETING>
上述例子中,GREETING 元素具有LANGUAGE 屬性,其屬性值為ENGLISH。MOVIE 元素具有SOURCE 屬性,其屬性值為
WavingHand.mov。GREETING 元素內容為Hello XML!。書寫內容的語言對內容本身來說是一個有用的信息,可是語言不是內
容的一部分。
與此相似,MOVIE 元素內容為保存在WavingHand.mov 文件中的二進制數據。盡管文件名告訴我們到何處可找到元素內容,
但它本身不是元素內容。再次強調,屬性包含有關元素內容信息,而不是元素內容本身。
元素可具有多個屬性,例如:
<RECTANGLE WIDTH= "30" HEIGHT= "45" />
<SCRIPT LANGUAGE= "javascript" ENCODING= "8859_1" >...</SCRIPT>
上例中,SCRIPT 元素屬性LANGUAGE 的值為javascript,SCRIPT 元素屬性ENCODING 的值為8859_1;RECTANGLE 元素屬性WIDTH
的值為30;RECT 元素屬性HEIGHT 的值為45。這些屬性值均為字符串數據,不是數字型數據。
結束標記不能帶屬性,下例視為非法:
<SCRIPT>...</SCRIPT LANGUAGE= "javascript" ENCODING= "8859_1" >
XML 實用大全
第 295 頁
10.2 在DTD 中聲明屬性
與元素和實體相似,為保持文檔的合法性,需要在文檔的DTD 中聲明屬性。<!ATTLIST>標記用于聲明屬性,其形式如下:
<!ATTLIST Element_name Attribute_name Type Default_value>
Element_name 為擁有該屬性的元素名。Attribute_name 為屬性名,Type 為表10-1 列出的10 種有效屬性類型的一種。最常
用的屬性類型為CDATA。最后,若未規(guī)定屬性值,則屬性值為Default_value。
例如,研究下列元素:
<GREETING LANGUAGE= "Spanish">
Hola!
</GREETING>
在DTD 中,可按如下格式聲明該元素:
<!ELEMENT GREETING (#PCDATA)>
<!ATTLIST GREETING LANGUAGE CDATA "English">
<!ELEMENT>標記簡單地說明greeting 元素包含可析字符數據,這里沒什么新內容。<!ATTLIST>標記表明GREETING 元素擁有
LANGUAGE 屬性,其值為CDATA 類型,本質上與元素內容的#PCDATA 相同。若所看見的GREETING 標記中沒有LANGUAGE 屬性,
則LANGUAGE 屬性值為缺省指定的English。
表10-1 屬性類型
類 型 含 義
CDATA 字符數據不是標記的文本
Enumerated 可能取值的列表,可從中選出正確的值
ID 不能被文檔中其他任何ID 類型屬性共享的數字,具有唯一性
IDREF 文檔中元素的ID 類型屬性的值
IDREFS 由空格分開的若干個ID
ENTITY 在DTD 中聲明的實體名
ENTITIES 在DTD 中聲明的若干個實體的名字,彼此間由空格分開
NMTOKEN XML 名稱
NOTATION 在DTD 中聲明的注釋名
XML 實用大全
第 296 頁
NMTOKENS 由空格分開的多個XML 名稱
在各自的標記中分別聲明各自的屬性列表。屬性所屬元素的名字包含在<!ATTLIST>標記中,如上例中的屬性聲明僅用于
GREETING 元素。如果其余元素也具有LANGUAGE 屬性,就需要各自獨立的<!ATTLIST> 聲明。
對大部分聲明而言,屬性聲明在文檔中出現的順序并無嚴格要求,可位于與其相連的元素聲明之前或之后。實際上,甚至可
以對同一屬性進行多次聲明。這時,第一個聲明首先執(zhí)行。
盡管非同尋常,甚至可以為并不存在的標記聲明屬性。在最初編輯DTD 時,可以聲明一些并不存在的屬性,計劃在以后再返
回這里繼續(xù)這些工作,為這些屬性聲明元素。
XML 實用大全
第 297 頁
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(85)