區別與DTD----文件類型定義 (Documnet Type Definition)
文件類型聲明指定了文檔使用的DTD。文件類型聲明出現在文檔的序言部分,處在XML聲明之後的基本元素之前,它可能包括文件類型定義或是文件類型定義所在文檔的URL。在有些情況下文件類型定義有內外兩個子集,剛文件類型聲明可能同時包括以上兩種情況。
文件類型聲明同文件類型定義不是一回事。只有文件類型定義縮寫為DTD。文件類型聲明必須包含或者引用文件類型定義,但文件類型定義不包括文件類型聲明,這造成了不必要的混亂。遺憾的是XML似乎與這術語密不可分,幸運的是在多數情況下二者的區別並不重要。
回顧一下一個基本的XML文檔
1<?xml version="1.0" standalone="yes">
2<REGARD>
3HelloXML!
4</REGARD>
5
這個文檔包含的單一元素REGARD(<? XML version="1.0" standalone="yes">是一條處理指示,不是元素)。一面代碼顯示了這一文檔,但這次帶有文件類型聲明。文件類型聲明聲明了基本元素是REGARD。文件類型聲明也包含文件類型定義,它聲明了REGARD元素包含可析的字元資料。
帶有DTD的XML文檔1<? xml version="1.0" standalone="yes">
2<! DOCTYPE REGARD [
3<! ELEMENT REGARD (#PCDATA)>
4]>
5<REGARD>
6HelloXML!
7</REGARD>
比較上述兩個代碼,惟一的區別在於前三行1<! DOCTYPE REGARD[
2<! ELEMENT REGARD(#PCDATA)>
3]>
這幾行就是文件類型聲明,文件類型聲明在XML聲明與文檔本身之間。XML聲明與文件類型聲明統稱為文檔序言(Prolog)。
文件類型聲明以<! DOCTYPE 為開始,以]>為結束。通常將開始和結束放在不同的行上,但斷行和多餘的空格並不重要。同一文件類型聲明也可以寫成一行。如下:1<! DOCTYPE REGARD[<!ELEMENT REGARD(#PCDATA)]>
在本例中基本元素名稱-REGARD跟在<!DOCTYPE之後。這不僅是一個名稱,也是一項要求。任何帶有這種文件類型聲明的合法文檔必須有基本元素。在[和]之間的內容是文件類型定義。
DTD由一系統聲明了特寫的元素、實體和屬性的標記聲明所組成。其中的一項聲明基本元素。
1<!ELEMENT REGARD(#PCDATA)>
單個行<! ELEMENT REGARD(#PCDATA)>是一項元素型別宣告。在本例中,聲明的元素名稱是REGARD,它是惟一的元素。這一元素可以包含可析的字元資料。可解析的字元實質上是除標記文本外的任何文本。這也包括實體引用,在對文檔進行文法分析時,實體引用就被文本所取代。
當然,文檔也可以與樣式單結合起來來格式化文檔。實際上可以用同一個樣式單,如下,只要在序言中增加<? xml-stylesheet?>處理指示即可。
1<? xml version="1.0" standalone="yes"?>
2<? xml-stylesheettype="text/css" href = "regard.css"?>
3<! DOCTYPE REGARD[
4<ELEMENT REGARD(#PCDATA)>
5]>
6<REGARD>
7Hello
8</REGARD>
9