DTDjava
1、什麼是DTD?web
DTD即Document Type Definition,文檔類型定義。網絡
咱們知道,XML的標籤能夠自定義,不受任何約束。但有時侯,爲了符合邏輯和業務須要,咱們須要對XML文檔加以約束。而DTD就是用來約束XML文檔的。使其在必定的規範下使用。除了DTD技術,Schema技術也用於約束XML文檔。app
2、DTD文檔的聲明webapp
外部文檔聲明 <!DOCTYPE 根元素 SYSTEM|PUBLIC "DTD文件路徑"> eg: <!DOCTYPE webapp PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 除了外部文檔聲明,還有內部文檔聲明,內外部文檔聲明。 內部文檔聲明:<!DOCTYPE 根元素 [定義內容]> 內外部文檔聲明:<!DOCTYPE 根元素 SYSTEM "DTD文件路徑"> 對於內部文檔聲明,內外部文檔聲明,咱們簡單瞭解便可。主要仍是採用外部文檔聲明的方式。
注意事項:
1.定義關鍵字必定要大寫,好比DOCTYPE ELEMENT ATTLIST,此外SYSTEM PUBLIC也應該大寫。
2.當引用的是本地的DTD文檔時,在聲明中使用SYSTEM關鍵字。 eg:<!DOCTYPE stu SYSTEM "test.dtd">
3.當引用的是網絡上公共的DTD文檔時,採用PUBLIC關鍵字。 eg:<!DOCTYPE webapp PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"
3、DTD元素spa
基本語法:<!ELEMENT NAME CONTENT> 解釋:ELEMENT 關鍵字 NAME 元素名稱 CONTENT 元素類型,主要有如下幾種,都必須大寫: 1.EMPTY ----該元素不能包含任何元素或文本,但能夠有屬性 2.ANY---該元素能夠包含在DTD中定義的元素內容。 3.#PCDATA ---該元素不包含其餘元素,只有文本內容,也就是說鈣元素內部不能嵌套其餘標籤。用關鍵字#PCDATA進行定義,它表明已經編譯過的字符數據。 4.子元素類型---該元素能夠包含其餘一系列子元素。子元素內容模型用來指定鈣元素能夠包含哪些子元素。 eg:<!ELEMENT stu(classID,name,age,addr)> 上面代碼表示:stu元素包含classID,name,age,addr四個子元素。 根據子元素之間的關係,子元素內容模型可能有如下兩種結構: 1.序列,全部子元素必須出現且只出現一次。注意事項:使用序列時,序列中不能出現#PCDATA。子元素中能夠包含其餘子元素。 2.選擇。 eg:<!ELEMENT stu(classID|name|age|addr)>。 上述代碼表示,stu的子元素只能是classID,name,age,addr中的一個,且只能有一個。 元素出現現次數指示符:
? 0次或一次
* 0次或者屢次
+ 至少出現一次
無符號 只能出現一次
4、XML屬性定義code
基本語法:<!ATTLIST 標籤名 屬性名 屬性類型 屬性說明> 解釋: 屬性類型能夠是如下幾種類型; 1.CDATA:最普通的字符串 2.枚舉 即(值1|值2|值三),須要括號 3.ID:表示該屬性值是惟一的。 屬性值須要以字母或者下劃線開頭。 屬性說明: 一、#REQUIRED:必須設置。 <!ATTLIST stu school (NCU|Pecking University|Wuhan University) #REQUIRED> 2.#IMPLIED:可選值,也就是說能夠設置該屬性的值,也能夠不設置 <!ATTLIST addr CDATA #IMPLIED> 3.#FIXED:固定值.也就是說給該屬性指定一個固定的值。語法格式爲:#FIXED 」固定值" <!ATTLIST stu class #FIXED "電子商務161"> 4.默認值。 <!ATTLIST addr (北京|南昌|武漢) "南昌"
5、XML實體blog
實體:實體是用來定義普通文本快捷方式的變量。 實體分爲:引用實體和參數實體 . 引用實體在XML中使用,格式爲:&實體名 參數實體在DTD內部使用,格式爲:%實體名 引用實體:定義格式:<!ENTITY 實體名 文本值> eg:<!ENTITY copyright "Evil.company"> 參數實體:定義格式:<!ENTITY % 實體名 文本值> 注意:定義時%與實體名之間存在空格,使用的時候不須要空格。eg:<!ENTITY % name "HelloWorld">