XML學習之路(二)

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">
相關文章
相關標籤/搜索