曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
通常,任何相對于文檔位置所形成合法的URL 的引用都可以接受。例如,下面這些都是合法的文檔類型聲明:
<!DOCTYPE SEASON SYSTEM"/xml/dtds/baseball.dtd">
<!DOCTYPE SEASON SYSTEM"/dtds/baseball.dtd">
<!DOCTYPE SEASON SYSTEM "../baseball.dtd">
一個文檔不能有多于一個的文檔類型聲明,即不能有多于一個的<!DOCTYPE >標記。要使用不止在一個DTD 中聲明
的元素,就需要使用外部參數實體引用。這些內容將在下一章中討論。
8.7.2 公共的DTD
XML 實用大全
第 243 頁
關鍵詞SYSTEM 是為單個作者或小組所用的私有的DTD 使用的。但作為XML 承諾的一部分,可令覆蓋整個產業的廣泛組織(如
ISO 或IEEE)能夠將公共DTD 加以標準化,以便用于各自的專門領域。這樣的標準化可以讓人們不用為同一項目重復作標記,
并且使用戶共享公用文檔更容易。
為創建組織之外的編寫者設計的DTD 使用PUBLIC 關鍵詞而不使用SYSTEM 關鍵詞。并且DTD 有一個文件名。句法如下:
<!DOCTYPE root_element_name PUBLIC "DTD_name" "DTD_URL">
root_element_name 仍然是基本元素名稱。PUBLIC 是XML 關鍵詞,說明這一DTD 是公共使用并具有名稱。DTD_name 是與此
DTD 聯系的名稱。有些XML 處理程序會使用名稱從中心庫中檢索DTD。最后,如果DTD 不能根據名稱從熟知的庫中檢索到,
則DTD_URL 是一個能找到該DTD 的相對或絕對URL。
DTD 名稱與XML 名稱略有不同。它們只能包含ASCII 字母字符、空格、軟回車符、換行符和下面的標點符號:
-’()+,/:=?;!*#@$_%。 而且,公共DTD 要遵守一些約定。
如果一項DTD 是ISO 標準,它的名稱要以字符串“ISO”開始。如果是非ISO 標準組織批準的DTD,它的名稱以加號(+)開始。
如果不是標準組織批準的DTD,它的名稱以連字符 (-)開始。這些開始字符串后接雙斜線(//) 和DTD 所有者的名字,其后
接另一個雙斜線和DTD 描述的文檔類型,然后又是一個雙斜線后接ISO639 語言標識符,如EN 表示英語。在
http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt 處列有完整的ISO639 標識符。例如,棒球DTD 可以如下命
名:
-//Elliotte Rusty Harold//DTD baseball statistics//EN
本例說明這個DTD 不是由任何標準組織批準的(-),為Elliotte Rusty Harold 所有,描述棒球統計,用英語編寫。通過DTD
名稱指向這一DTD 的完整的文檔類型聲明如下:
<!DOCTYPE SEASON PUBLIC
"//Elliotte Rusty Harold//DTD baseball statistics//EN"
"http://metalab.unc.edu/xml/dtds/baseball.dtd">
讀者也許注意到了許多HTML 編輯器如BBEdit 會在其創建的每個HTML 文檔開端放入下列字符串:
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML//EN">
現在可能 了解這些字符串是什么意思了!它表明文檔符合一項非標準 (-) 的HTML 的DTD,由W3C 用英語制作。
從技術上說,W3C 不是一個標準組織,因為它的成員限于交納會費的公司而不是官方批準的實體。它只出版建議而不
是標準。實際上這種區別沒有關系。
8.7.3 內部和外部DTD 子集
盡管大多數文檔由易于定義的部分組成,但不是所有的文檔都使用共同的模板。許多文檔為自己使用而增加特定元素時,可
能需要像HTML 4.0 DTD 這樣的標準DTD。其他文檔可能只使用標準元素,但需要對它們重新排序。例如,一個HTML 主頁可
XML 實用大全
第 244 頁
能有一個BODY 元素,它必須包含一個H1 標題標記后接一份DL 定義列表,而另一個HTML 主頁可能有一個BODY 元素,它包
含許多不同的順序不定的標題標記、段落和圖像。如果特定的文檔與同一站點上其他頁面具有不同的結構,在文檔本身內定
義結構比在單獨的DTD 中定義更有用。這種方法也使文檔更易于編輯。
為達此目的,文檔可使用內部和外部DTD。內部聲明放在<!DOCTYPE>標記尾部的方括號中。例如,假如需要一個包括棒球統
計并有頁眉和頁腳的主頁。這樣的文檔可如清單8-15 所示。棒球信息從文檔baseball.dtd 中得到,構成外部DTD 子集。基
本元素DOCUMENT 以及元素TITLE 和SIGNATURE 的定義來自包含于文檔中的內部DTD 子集。這有點不尋常。一般的,更為通
用的部分可能應該是外部DTD 的一部分,而內部內容則更與特定專題有關。
清單8-15:DTD 具有內部和外部DTD 子集的棒球文檔
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SEASON SYSTEM "baseball.dtd"> [
<!ELEMENT DOCUMENT (TITLE, SEASON, SIGNATURE)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT COPYRIG T (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT LAST_MODIFIED (#PCDATA)>
<!ELEMENT SIGNATURE (COPYRIGHT, EMAIL, LAST_MODIFIED)>
]>
<DOCUMENT>
<TITLE>1998 Major League Baseball Statistics</TITLE>
<SEASON>
<YEAR>1998</YEAR>
<LEAGUE>
<LEAGUE_NAME>National</LEAGUE_NAME>
<DIVISION>
<DIVISION_NAME>East</DIVISION_NAME>
<TEAM>
<TEAM_CITY>Atlanta</TEAM_CITY>
XML 實用大全
第 245 頁
<TEAM_NAME>Braves</TEAM_NAME>
</TEAM>
<TEAM>
<TEAM_CITY>Florida</TEAM_CITY>
<TEAM_NAME>Marlins</TEAM_NAME>
</TEAM>
<TEAM>
<TEAM_CITY>Montreal</TEAM_CITY>
<TEAM_NAME>Expos</TEAM_NAME>
</TEAM>
<TEAM>
<TEAM_CITY>New York</TEAM_CITY>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(72)