曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
的元素和#PCDATA 的列表是合法的。其他用法是不合法的。例如,下面的例子就不合法:
<!ELEMENT TEAM (TEAM_CITY, TEAM_NAME, PLAYER*, #PCDATA)>
使用混合內(nèi)容的最基本的理由是,當(dāng)將老式的文本數(shù)據(jù)轉(zhuǎn)換成XML 的過(guò)程中,隨著新標(biāo)記的增加逐步測(cè)試DTD 的合法性,而
不要在完成全部轉(zhuǎn)換后再試圖去發(fā)現(xiàn)錯(cuò)誤。這是一個(gè)很好的技巧,我建議大家都這樣做,畢竟從剛完成的代碼中立即找出錯(cuò)
誤比幾小時(shí)后要容易一些。但是,這僅僅是開(kāi)發(fā)時(shí)的一個(gè)技巧。最終的用戶是不應(yīng)該看到這些的。當(dāng)DTD 完成后不能把子元
素同可析的字符數(shù)據(jù)混合起來(lái)。一般總可以建立一個(gè)包括可析的字符數(shù)據(jù)的新標(biāo)記。
例如,可以聲明只包含#PCDATA 數(shù)據(jù)的BLURB 元素并把它增加為TEAM 的最后一個(gè)子元素,這樣就在每個(gè)TEAM 元素的末尾包
括一個(gè)文本塊。下面是該聲明:
<!ELEMENT TEAM (TEAM_CITY, TEAM_NAME, PLAYER*, BLURB)>
<!ELEMENT BLURB (#PCDATA)>
這對(duì)文檔的文本改變不大。所有的變化只是向每個(gè)TEAM 元素增加了一個(gè)或多個(gè)帶有開(kāi)始標(biāo)記和結(jié)束標(biāo)記的可選元素。但是
這就使文檔更加健全。而且,從XML 程序接收到文檔樹(shù)的XML 應(yīng)用程序就能在更短的時(shí)間內(nèi)處理數(shù)據(jù),因?yàn)槲臋n具有非混合
內(nèi)容所允許的更為結(jié)構(gòu)化的格式。
8.5.12 空元素
前面討論過(guò),定義一個(gè)沒(méi)有內(nèi)容的元素有時(shí)是有用的。HTML 中的例子包括圖像、水平線和中斷<IMG>、<R>和<BR>。在XML
中,這類空元素是通過(guò)以/>結(jié)束的空標(biāo)記來(lái)標(biāo)識(shí)的,如<IMG/>、<HR/>和<BR/>。
XML 實(shí)用大全
第 223 頁(yè)
合法的文檔必須聲明使用的空元素和非空元素。因?yàn)榘炊x,空元素沒(méi)有子元素,聲明很容易。可像通常一樣使用包含空元
素名的<!ELEMENT>來(lái)聲明,但用關(guān)鍵詞EMPTY (像所有XML 標(biāo)記一樣區(qū)分大小寫)代替了子元素的列表。例如:
<!ELEMENT BR EMPTY>
<!ELEMENT IMG EMPTY>
<!ELEMENT HR EMPTY>
清單8-11 是同時(shí)使用了空元素和非空元素的合法文檔。
清單8-11:使用了空標(biāo)記的合法文檔
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (TITLE,SIGNATURE)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT COPYRIGHT (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT BR EMPTY>
<!ELEMENT HR EMPTY>
<!ELEMENT LAST_MODIFIED (#PCDATA)>
<!ELEMENT SIGNATURE (HR, COPYRIGHT, BR, EMAIL,
BR, LAST_MODIFIED)>
]>
<DOCUMENT>
<TITLE>Empty Tags</TITLE>
<SIGNATURE>
<HR/>
<COPYRIGHT>1998 Elliotte Rusty Harold</COPYRIGHT><BR/>
<EMAIL>elharo@metalab.unc.edu</EMAIL><BR/>
XML 實(shí)用大全
第 224 頁(yè)
<LAST_MODIFIED>Thursday,April 22,1999</LAST_MODIFIED>
</SIGNATURE>
</DOCUMENT>
XML 實(shí)用大全
第 225 頁(yè)
8.6 DTD 中的注釋
像一份XML 文檔的其他部分一樣,DTD 也可以包含注釋。這些注釋不能在聲明中出現(xiàn),但可以在聲明外出現(xiàn)。注釋通常用來(lái)
組織不同部分的DTD,為一些元素的許可內(nèi)容提供說(shuō)明,并對(duì)元素作進(jìn)一步的解釋。例如,YEAR 元素的聲明可以有這樣的注
釋:
<!--A four digit year like 1998, 1999, or 2000 ?-->
<!ELEMENT YEAR (#PCDATA)>
像所有注釋一樣,這只是為了便于人們閱讀源代碼,XML 處理程序會(huì)忽略注釋部分。
注釋的一個(gè)可能用法是定義標(biāo)記中用到的縮略語(yǔ)。例如,在本章及前些章中,我極力避免使用棒球術(shù)語(yǔ)的縮略語(yǔ),因?yàn)閷?duì)一
些人來(lái)說(shuō)難以弄清楚。一種可能的途徑是使用縮略語(yǔ)但在DTD 中用注釋加以定義。清單8-12 同以前的棒球例子相似,但使
用了DTD 注釋和縮略標(biāo)記。
清單8-12:使用縮略標(biāo)記和DTD 注釋的合法XML 文檔
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT LEAGUE (LEAGUE_NAME, DIVISION, DIVISION, DIVISION)>
<!--American or National ?
<!ELEMENT LEAGUE_NAME (#PCDATA)>
<!--East , West , or Central ?
<!ELEMENT DIVISION_NAME (#PCDATA)>
<!ELEMENT DIVISION (DIVISION_NAME, TEAM+)>
<!ELEMENT SEASON (YEAR, LEAGUE, LEAGUE)>
<!ELEMENT TEAM (TEAM_CITY, TEAM_NAME, PLAYER*)>
<!ELEMENT TEAM_CITY (#PCDATA)>
<!ELEMENT TEAM_NAME (#PCDATA)>
<!ELEMENT PLAYER (GIVEN_NAME, SURNAME, P, G,
GS, AB?, R?, H?, D?, T?, HR?, RBI?, SB?, CS?,
XML 實(shí)用大全
第 226 頁(yè)
SH?, SF?, E?, BB?, S?, HBP?, CG?, SO?, ERA?, IP?,
HRA?, RA?, ER?, HB?, WP?, B?, WB?, K?)
>
<!--=======================-->
<!--Player Info-->
<!--Player’s last name-->
<!ELEMENT SURNAME (#PCDATA)>
<!--Player’s first name-->
<!ELEMENT GIVEN_NAME (#PCDATA)>
<!—Position-->
<!ELEMENT P (#PCDATA)>
<!--Games Played-->
<!ELEMENT G (#PCDATA)>
<!--Games Started-->
<!ELEMENT GS (#PCDATA)>
<!--=======================-->
<!--Batting Statistics-->
<!--At Bats-->
<!ELEMENT AB (#PCDATA)>
<!--Runs-->
<!ELEMENT R (#PCDATA)>
中國(guó)航空網(wǎng) m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(68)