摘要:文檔類型定義和命名空間 有效(Valid)的XML文檔: 首先,XML文檔是個(gè)格式正規(guī)的(Well-formed)XML文檔;(見格式正規(guī)的XML:語(yǔ)法 屬性 實(shí)體 處理指令 樣式單 CDATA節(jié))?! ∑浯?,需要滿足DTD的要求,這樣的XML文檔稱為有效的(Valid)XML文檔。 DTD DTD,即文檔類型定義——Document Type Definition?!?
文檔類型定義和命名空間
有效(Valid)的XML文檔:
首先,XML文檔是個(gè)格式正規(guī)的(Well-formed)XML文檔;(見格式正規(guī)的XML:語(yǔ)法 屬性 實(shí)體 處理指令 樣式單 CDATA節(jié))。
其次,需要滿足DTD的要求,這樣的XML文檔稱為有效的(Valid)XML文檔。
DTD
DTD,即文檔類型定義——Document Type Definition。
DTD用來(lái)描述XML文檔的結(jié)構(gòu),
一個(gè)DTD文檔包含:
元素(ELEMENT)的定義規(guī)則;
元素之間的關(guān)系規(guī)則;
屬性(ATTLIST)的定義規(guī)則;
可使用的實(shí)體(ENTITY)或符號(hào)(NOTATION)規(guī)則。
DTD文檔與XML文檔實(shí)例的關(guān)系
類與對(duì)象;
數(shù)據(jù)庫(kù)表結(jié)構(gòu)與數(shù)據(jù)記錄;
有了DTD,每個(gè)XML文件可以攜帶一個(gè)自身格式的描述。
有了DTD,不同組織的人可以使用一個(gè)通用DTD來(lái)交換數(shù)據(jù)。
應(yīng)用程序可以使用一個(gè)標(biāo)準(zhǔn)DTD校驗(yàn)從外部世界接收來(lái)的XML數(shù)據(jù)是否有效。
可以使用DTD校驗(yàn)自己的XML數(shù)據(jù)。
如何生成DTD文檔
DTD文檔有三種應(yīng)用形式:
1.內(nèi)部DTD文檔
<!DOCTYPE 根元素[定義內(nèi)容]>
2.外部DTD文檔
<!DOCTYPE 根元素 SYSTEM "DTD文件路徑">
3.內(nèi)外部DTD文檔結(jié)合
<!DOCTYPE 根元素 SYSTEM "DTD文件路徑" [定義內(nèi)容]>
內(nèi)部DTD
一個(gè)內(nèi)部DTD的例子:
上半部分是DTD,下面是XML文檔,文檔要符合DTD。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem [
<!ELEMENT poem (author, title, content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>]><!--為元素poem定義了三個(gè)子元素author title content,
這三個(gè)元素必須要出現(xiàn)并且必須按照這個(gè)順序
少元素不行,多元素也不行--><!--指明author,title,content里面的內(nèi)容是字符串類型--><poem>
<author>王維</author>
<title>鹿柴</title>
<content>空山不見人,但聞人語(yǔ)聲。返景入深林,復(fù)照青苔上。</content></poem>
上面的文檔就是格式良好,并且有效的。
詳見其中的注釋。
#PCDATA(Parsed Character Data) ,可解析的字符數(shù)據(jù),即字符串。
上面部分是DTD,在下面編寫XML文檔時(shí),如果不符合其DTD規(guī)范,用XMLSpy做檢查的時(shí)候,是well-formed的,但是卻不是valid的。
比如根元素寫:
<Students></Students>
Validate檢查的時(shí)候就會(huì)報(bào)錯(cuò),根元素和DTD中的poem不符。
外部DTD
上面是一個(gè)內(nèi)部DTD的例子,下面用一個(gè)外部的DTD:
首先,新建一個(gè)DTD文檔,文件名叫dtd_1.dtd,內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?><!ELEMENT poem (author, title, content)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)>
然后,新建一個(gè)XML文檔。
如果只寫XML元素內(nèi)容,那么它是一個(gè)格式良好的,卻不是有效的文檔,因?yàn)檎也坏紻TD。
需要加入外部DTD文件的名稱(同一個(gè)路徑下只給出文件名即可)。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem SYSTEM "dtd_1.dtd"><poem>
<author>王維</author>
<title>鹿柴</title>
<content>空山不見人,但聞人語(yǔ)聲。返景入深林,復(fù)照青苔上。</content></poem>
內(nèi)外部DTD結(jié)合
DTD的內(nèi)容也可以有些放在外部,有些放在內(nèi)部,如下:
文件dtd_2.dtd
<?xml version="1.0" encoding="UTF-8"?><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)>
XML文檔:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem SYSTEM "dtd_2.dtd"[
<!ELEMENT poem (author, title, content)><!ELEMENT content (#PCDATA)>]><poem>
<author>王維</author>
<title>鹿柴</title>
<content>空山不見人,但聞人語(yǔ)聲。返景入深林,復(fù)照青苔上。</content></poem>