當前位置:才華齋>IT認證>IBM認證>

IBM XML認證知識點:Dtd

IBM認證 閱讀(1.82W)

一個“有效的”檔案首先應該是“形式良好”的。但這還遠遠不夠,它還要往前更進一步。一個XML(XML培訓 程式語言培訓 )檔案必須遵守檔案型別描述 Dtd(Document Type Definition)中定義的種種規定。所有的檔案都是由序言和檔案體構成的。序言中包含了XML宣告,在序言中還可以包含Dtd定義。

IBM XML認證知識點:Dtd

  內部Dtd

一個“有效的”檔案首先應該是“形式良好”的。但這還遠遠不夠,它還要往前更進一步。一個XML檔案必須遵守檔案型別描述Dtd(Document Type Definition)中定義的種種規定。所有的檔案都是由序言和檔案體構成的。序言中包含了XML宣告,在序言中還可以包含Dtd定義。

最簡單的使用Dtd的方法是在XML檔案的序言部分加入一個Dtd描述,加入的位置是緊接在XML處理指示之後。一個包含Dtd的XML檔案的結構為:

元素描述

]>

檔案體.......

這樣,我們就定義了一個檔案,它以DOCTYPE中規定的根元素名作為其根元素的名字。

如果為每一個XML檔案加入一段Dtd定義,是相當繁瑣的。而且,更多的情況下,我們會為一批XML檔案定義一個相同的Dtd。例如,對於報社中的每篇稿件,它們都有相同的格式,可以採用一個統一的Dtd,為每一篇單獨定義既麻煩,又不利於統一格式。好在XML規範為我們提供瞭解決這個問題的方法,它就是外部Dtd。

v

外部Dtd的好處是:它可以方便高效地被多個XML檔案所共享。你只要寫一個Dtd 檔案,就可以被多個XML檔案所引用。事實上,當許多組織需要統一它們的`資料交換格式時,它們就是通過外部Dtd來完成的。這樣做不僅簡化了輸入工作,還保證當你需要對Dtd做出改動時,不用一一去改每個引用了它的XML檔案,只要改一個公用的Dtd檔案就足夠了。

為了引用一個外部Dtd,必須修改XML宣告和DOCTYPE宣告。

XML宣告中必須說明這個檔案不是自成一體的,即standalone屬性的屬性值不再是yes了:

在DOCTYPE宣告中,應該加入SYSTEM屬性:

例如:

上面的URL是一個絕對路徑,除此以外,它還可以是一個相對路徑,如: 它說明這個Dtd檔案和引用它的XML檔案在同一個目錄下。

使用這種方法,你可以方便地把Dtd檔案從你的XML檔案中分離出來,貼上到另一個檔案中。這樣,你就得到一個Dtd檔案和一個有效的XML檔案。

  公用Dtd

使用外部Dtd時,要在DOCTYPE中使用關鍵字SYSTEM。實際上,SYSTEM不是引用外部Dtd的唯一方法,這個關鍵字主要用於引用一個作者或組織所編寫的眾多 XML檔案中通用的Dtd。還存在一種外部Dtd,它是一個由權威機構制訂的,提供給特定行業或公眾使用的Dtd。因此,另一個引用外部Dtd的辦法是使用關鍵字 PUbLIC,引用這一類公開給公眾使用的Dtd。

當使用關鍵字PUbLIC進行引用時,這個外部Dtd還需要得到一個標識名。引用公共Dtd的形式為:

請見下面例子:

這個Dtd標識的命名規則和XML檔案的命名規則稍有不同。具體地說,Dtd名稱只能包含字母、數字、空格和下面的符號:_%$#@()+:=/!*;?。同時,Dtd名稱還必須符合一些標準的規定。例如,ISO標準的Dtd以“ISO”三個字母開頭;被改進的非ISO 標準的Dtd以加號“+”開頭;未被改進的非ISO標準的Dtd以減號“-”開頭。

無論是哪一種情況,開始部分後面都跟著兩個斜槓“//”及Dtd所有者的名稱。在這個名稱之後又是兩個斜槓“//”,再然後是Dtd所描述的檔案的型別。最後,在又一對斜槓之後是語言的種類(參見ISO 639)。例如下面這個公用Dtd的引用:

看上去的確比較複雜,不過沒關係,對於Dtd的命名通常不是它的引用者的任務,XML 檔案的編寫者只要在自己的檔案中把事先定義好的Dtd名稱放在相應的位置中就可以了。