曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
所有的元素類型聲明都以<!ELEMENT(區分大小寫)開頭而以>結束。其中包括聲明的元素名稱(本例中為SEASON)后接內
容規格。關鍵詞ANY(也要區分大小寫)表明所有可能的元素以及可析的字符數據都可以是SEASON 元素的子元素。
基本元素使用ANY 是通常的作法——尤其是對未結構化的文檔——但對多數其他元素則應避免使用ANY。通常每項標記的內
容應盡可能準確。DTD 經常是在整個開發過程中逐步完善的,隨著反映應用情況和首制作中未預料的情況,嚴格性將減少。
所以,最好是開始時嚴格,以后再放松些。
8.5.2 #PCDATA
盡管文檔中可以出現任何元素,但出現的元素必須聲明。第一個需要聲明的元素是YEAR,下面是YEAR 元素的元素聲明:
<!ELEMENT YEAR (#PCDATA)>
該聲明說明YEAR 只能包含可析的字符數據,即非標記文本,但它不能包含自己的子元素。所以,下面這個YEAR 元素是合法
的:
<YEAR>1998</YEAR>
以下這些YEAR 元素都是合法的:
XML 實用大全
第 199 頁
<YEAR>98</YEAR>
<YEAR>1998 C.E.</YEAR>
<YEAR>
The year of our lord one thousand,
nine hundred, & ninety-eight
</YEAR>
甚至下面這個YEAR 元素也是合法的,因為XML 不會去檢查PCDATA 的內容,只要是不包括標記的文本就可以。
<YEAR>Delicious, delicious, oh how boring</YEAR>
但是,下面的YEAR 元素是非法的,因為它包含了子元素:
<YEAR>
<MONTH>January</MONTH>
<MONTH>February</MONTH>
<MONTH>March</MONTH>
<MONTH>April</MONTH>
<MONTH>May</MONTH>
<MONTH>June</MONTH>
<MONTH>July</MONTH>
<MONTH>August</MONTH>
<MONTH>September</MONTH>
<MONTH>October</MONTH>
<MONTH>November</MONTH>
<MONTH>December</MONTH>
</YEAR>
SEASON 和YEAR 元素聲明應包括在文檔類型聲明中,如下所示:
XML 實用大全
第 200 頁
<!DOCTYPE SEASON [
<!ELEMENT SEASON ANY>
<!ELEMENT YEAR (#PCDATA)>
]>
通常,空格和縮進無關緊要。元素聲明的順序也不重要。下面這一文檔類型聲明的作用與上面的聲明相同:
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT SEASON ANY>
]>
上面兩個文檔聲明都是說一個SEASON 元素可以包含可析的字符數據和以任意順序聲明的任意數量的其他元素。本例中如此
聲明的元素只有YEAR,它只能包含可析的字符數據。例如考慮清單8-5 中的文檔。
清單8-5:一個合法的文檔
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT SEASON ANY>
]>
<SEASON>
<YEAR>1998</YEAR>
</SEASON>
因為SEASON 元素也可以包含可析的字符數據,所以可以在YEAR 元素之外附加文本,如清單8-6 所示。
清單8-6:包含YEAR 元素和正常文本的合法的文檔
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
XML 實用大全
第 201 頁
<!ELEMENT SEASON ANY>
]>
<SEASON>
<YEAR>1998</YEAR>
Major League Baseball
</SEASON>
我們最后是不接受這樣的文檔的。但是此時它是合法的,因為SEASON 被聲明為可以接受ANY 內容。大多數時候,在定義一
個元素的所有子元素之前以ANY 代替一個元素,就比較容易起步。然后再用實際的子元素來替換ANY。
您可以向清單8-6 上附加一份簡單的樣式單,如第4 章中創建的baseballstats.css,如清單8-7 所示。然后將其裝入Web
瀏覽器,結果顯示在圖8-7 中。baseballstats.css 樣式單包含一些沒有出現在DTD 或是清單8-7 列出的文檔部分中的元素
的樣式規則,但這沒有問題。Web 瀏覽器會忽略任何文檔中沒有的元素的樣式規則。
清單8-7:包含樣式單、一個YEAR 元素和正常文本的合法文檔
<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/css" href="greeting.css"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT SEASON ANY>
]>
<SEASON>
<YEAR>1998</YEAR>
Major League Baseball
</SEASON>
XML 實用大全
第 202 頁
圖8-7 在Internet Explorer 5.0 中顯示的包含樣式單、YEAR 元素和正常文本的文檔
8.5.3 子元素列表
由于SEASON 元素被聲明為可以接受任何元素作為子元素,因而可以接受各種各樣的元素。當遇到那些多多少少有些非結構
化的文本,如雜志文章時,這種情況就很有用。這時段落、副欄、項目列表、序號列表、圖形、照片以及子標題可出現在文
檔的任意位置。然而,有時可能想對數據的安排上多實行些規則和控制。例如,可能會要求每一個LEAGUE 元素有一個
LEAGUE_NAME 子元素,而每個PLAYER 元素要有一個GIVEN_NAME 和SURNAME 子元素,并且GIVEN_NAME 要放在SURNAME 之前。
為了聲明LEAGUE 元素必須有一個名稱,只要聲明LEAGUE_NAME 元素,然后在LEAGUE 聲明后的括號內加入LEAGUE_NAME,如
下面這樣:
<!ELEMENT LEAGUE (LEAGUE_NAME)>
<!ELEMENT LEAGUE_NAME (#PCDATA)>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(62)