- 相關(guān)推薦
IBM XML認(rèn)證知識點:Dtd
一個“有效的”文件首先應(yīng)該是“形式良好”的。但這還遠(yuǎn)遠(yuǎn)不夠,它還要往前更進(jìn)一步。一個XML(XML培訓(xùn) 編程語言培訓(xùn) )文件必須遵守文件類型描述 Dtd(Document Type Definition)中定義的種種規(guī)定。所有的文件都是由序言和文件體構(gòu)成的。序言中包含了XML聲明,在序言中還可以包含Dtd定義。
內(nèi)部Dtd
一個“有效的”文件首先應(yīng)該是“形式良好”的。但這還遠(yuǎn)遠(yuǎn)不夠,它還要往前更進(jìn)一步。一個XML文件必須遵守文件類型描述Dtd(Document Type Definition)中定義的種種規(guī)定。所有的文件都是由序言和文件體構(gòu)成的。序言中包含了XML聲明,在序言中還可以包含Dtd定義。
最簡單的使用Dtd的方法是在XML文件的序言部分加入一個Dtd描述,加入的位置是緊接在XML處理指示之后。一個包含Dtd的XML文件的結(jié)構(gòu)為:
元素描述
]>
文件體.......
這樣,我們就定義了一個文件,它以DOCTYPE中規(guī)定的根元素名作為其根元素的名字。
如果為每一個XML文件加入一段Dtd定義,是相當(dāng)繁瑣的。而且,更多的情況下,我們會為一批XML文件定義一個相同的Dtd。例如,對于報社中的每篇稿件,它們都有相同的格式,可以采用一個統(tǒng)一的Dtd,為每一篇單獨定義既麻煩,又不利于統(tǒng)一格式。好在XML規(guī)范為我們提供了解決這個問題的方法,它就是外部Dtd。
v
外部Dtd的好處是:它可以方便高效地被多個XML文件所共享。你只要寫一個Dtd 文件,就可以被多個XML文件所引用。事實上,當(dāng)許多組織需要統(tǒng)一它們的數(shù)據(jù)交換格式時,它們就是通過外部Dtd來完成的。這樣做不僅簡化了輸入工作,還保證當(dāng)你需要對Dtd做出改動時,不用一一去改每個引用了它的XML文件,只要改一個公用的Dtd文件就足夠了。
為了引用一個外部Dtd,必須修改XML聲明和DOCTYPE聲明。
XML聲明中必須說明這個文件不是自成一體的,即standalone屬性的屬性值不再是yes了:
在DOCTYPE聲明中,應(yīng)該加入SYSTEM屬性:
例如:
上面的URL是一個絕對路徑,除此以外,它還可以是一個相對路徑,如: 它說明這個Dtd文件和引用它的XML文件在同一個目錄下。
使用這種方法,你可以方便地把Dtd文件從你的XML文件中分離出來,粘貼到另一個文件fclml.dtd中。這樣,你就得到一個Dtd文件和一個有效的XML文件。
公用Dtd
使用外部Dtd時,要在DOCTYPE中使用關(guān)鍵字SYSTEM。實際上,SYSTEM不是引用外部Dtd的唯一方法,這個關(guān)鍵字主要用于引用一個作者或組織所編寫的眾多 XML文件中通用的Dtd。還存在一種外部Dtd,它是一個由權(quán)威機構(gòu)制訂的,提供給特定行業(yè)或公眾使用的Dtd。因此,另一個引用外部Dtd的辦法是使用關(guān)鍵字 PUbLIC,引用這一類公開給公眾使用的Dtd。
當(dāng)使用關(guān)鍵字PUbLIC進(jìn)行引用時,這個外部Dtd還需要得到一個標(biāo)識名。引用公共Dtd的形式為:
請見下面例子:
這個Dtd標(biāo)識的命名規(guī)則和XML文件的命名規(guī)則稍有不同。具體地說,Dtd名稱只能包含字母、數(shù)字、空格和下面的符號:_%$#@()+:=/!*;?。同時,Dtd名稱還必須符合一些標(biāo)準(zhǔn)的規(guī)定。例如,ISO標(biāo)準(zhǔn)的Dtd以“ISO”三個字母開頭;被改進(jìn)的非ISO 標(biāo)準(zhǔn)的Dtd以加號“+”開頭;未被改進(jìn)的非ISO標(biāo)準(zhǔn)的Dtd以減號“-”開頭。
無論是哪一種情況,開始部分后面都跟著兩個斜杠“//”及Dtd所有者的名稱。在這個名稱之后又是兩個斜杠“//”,再然后是Dtd所描述的文件的類型。最后,在又一對斜杠之后是語言的種類(參見ISO 639)。例如下面這個公用Dtd的引用:
看上去的確比較復(fù)雜,不過沒關(guān)系,對于Dtd的命名通常不是它的引用者的任務(wù),XML 文件的編寫者只要在自己的文件中把事先定義好的Dtd名稱放在相應(yīng)的位置中就可以了。
【IBM XML認(rèn)證知識點:Dtd】相關(guān)文章:
關(guān)于IBM XML認(rèn)證考試的要點01-13
ibm認(rèn)證考試知識點06-13
IBM認(rèn)證項目01-12
IBM Lotus認(rèn)證試題03-08
IBM認(rèn)證考試流程01-12
IBM認(rèn)證的考試流程01-12
IBM認(rèn)證考試須知06-05
IBM認(rèn)證試題及答案07-21