XML約束:DTD
每一個XML文檔都可攜帶一個DTD,用來對該文檔格式進行描述,測試該文檔是否爲有效的XML文檔。
例:
1、編寫數據xml --- books.xml
2、編寫dtd文件---books.dtd
語法:
爲文檔每一個元素(不同名稱) 添加<!ELEMENT >標記
語法 :<!ELEMENT 元素名稱 子元素>
元素內部爲文本,則<!ELEMENT 元素名稱 子元素>裏面的子元素寫( #PCDATA)
3、將xml文件與dtd文件關聯起來
假若xml文件中某一標記缺失,就會出錯
DTD與xml關聯三種方式
1、內部DTD ----- 語法 <!DOCTYPE 根元素 []> (在中括號內填寫DTD內容)
2、外部DTD (引用本地DTD) ----- 語法 <!DOCTYPE 根元素 SYSTEM "本地DTD文件位置" >
3、公共DTD (引用網絡上DTD) <!DOCTYPE 文檔根結點 PUBLIC "DTD名稱" "DTD文件的URL">
例如:<!DOCTYPE web-app PUBLIC "-//Sun Mircrosystems.Inc.//DTD Web Application 2.3//EN" "http://java.sun.com./dtd/web-app_2_3_dtd">
其中,"web-app "是其根元素,“-//Sun Mircrosystems.Inc.//DTD Web Application 2.3//EN”是其DTD名稱,“http://java.sun.com./dtd/web-app_2_3_dtd”是其URL
DTD語法細節:
元素(ELEMENT)定義
' () ' 子元素、分組
' , ' 代表子元素順序
' + * ? ' ---- 正則表達式 ' + ' 表示1到多個
、' * '表示任意個(0到多個)、 ' ? '表示 0或者1個
' | ' 多選一
特殊元素內容:文本類型內容 #PCDATA 子元素內容如果爲空 EMPTY
例:<!ELEMENT name EMPTY> 表示標記<name>裏面沒有內容,空格、回車也沒有
屬性(ATTLIST)定義
語法:<!ATTLIST 元素名稱 屬性列表 >
屬性列表:
屬性名稱 類型 約束
屬性名稱 類型 約束
屬性名稱 類型 約束
屬性名稱 類型 約束
屬性類型
約束類型
例如:
實體(ENTITY)定義
對於xml數據內容重複,可以抽取實體
語法:<!ENTITY 實體名稱 "實體內容" >
引用實體方式:&實體名稱; (不要忘了分號)
例如: