dtd和schema的區別

2022-05-17 13:16:13 字數 2186 閱讀 9076

在xml技術裡,可以編寫乙個文件來約束乙個xml文件的書寫規範,這稱之為xml約束。

常用的約束技術xml dtd ;xml schema。

xml schema 也是一種用於定義和描述 xml 文件結構與內容的模式語言,其出現是為了克服 dtd 的侷限性

xml schema vs dtd:

xml schema符合xml語法結構。 

dom、sax等xml api很容易解析出xml schema文件中的內容。 

xml schema對命名空間支援得非常好。 

xml schema比xml dtd支援更多的資料型別,並支援使用者自定義新的資料型別。 

xml schema定義約束的能力非常強大,可以對xml例項文件作出細緻的語義限制。

xml schema不能像dtd一樣定義實體,比dtd更複雜,但xml schema現在已是w3c組織的標準,它正逐步取代dtd。  

dtd(document type definition),全稱為文件型別定義。

xml檔案使用 doctype 宣告語句來指明它所遵循的dtd檔案,doctype宣告語句有兩種形式:

一、當引用的檔案在本地時,採用如下方式:

例如: 。在xml檔案中手寫一下。

二、當引用的檔案是乙個公共的檔案時,採用如下方式:

dtd語法:元素定義、屬性定義、實體定義。

宣告乙個xml元素——元素型別可以是元素內容、或型別

在元素內容中也可以使用+、*、?等符號表示元素出現的次數:

+: 一次或多次 (書+)

?: 0次或一次 (書?)

*: 0次或多次  (書*)

xml文件中的標籤屬性需通過attlist為其設定屬性

語法格式:

設定說明:

#required:必須設定該屬性

#implied:可以設定也可以不設定 

#fixed:說明該屬性的取值固定為乙個值,在 xml 檔案中不能為該屬性設定其它值。但需要為該屬性提供這個值 

直接使用預設值:在 xml 中可以設定該值也可以不設定該屬性值。若沒設定則使用預設值。  

常用屬性值型別

cdata:表示屬性值為普通文字字串。

enumerated 

identity(實體)

實體定義:

實體用於為一段內容建立乙個別名,以後在xml文件中就可以使用別名引用這段內容了。

在dtd定義中,一條語句用於定義乙個實體。

實體可分為兩種型別:引用實體和引數實體。

引用實體主要在 xml 文件中被應用

語法格式:

:直接轉變成實體內容

引用方式:

&實體名稱;

在xml schema技術中有乙個專業術語來描述這個過程,即把xml schema文件宣告的元素繫結到乙個命名空間上,以後xml檔案就可以通過這個uri(即命名空間)來告訴解析引擎,xml文件中編寫的元素來自**,被誰約束。

xml schema 檔案自身就是乙個xml檔案,但它的副檔名通常為.xsd。

乙個xml schema文件通常稱之為模式文件(約束文件),遵循這個文件書寫的xml檔案稱之為例項文件。

和xml檔案一樣,乙個xml schema文件也必須有乙個根結點,但這個根結點的名稱為schema。

編寫了乙個xml schema約束文件後,通常需要把這個檔案中宣告的元素繫結到乙個uri位址上,

在xml schema技術中有乙個專業術語來描述這個過程,即把xml schema文件宣告的元素繫結到乙個命名空間上,

以後xml檔案就可以通過這個uri(即命名空間)來告訴解析引擎,xml文件中編寫的元素來自**,被誰約束。在xml schema中,每個約束模式文件都可以被賦以乙個唯一的命名空間,

命名空間用乙個唯一的uri(uniform resource identifier,統一資源識別符號)表示。 

在xml檔案中書寫標籤時,可以通過命名空間宣告(xmlns),來宣告當前編寫的標籤來自哪個schema約束文件。

為了在乙個xml文件中宣告它所遵循的schema檔案的具體位置,通常需要在xml文件中的根結點中使用schemalocation屬性來指定,例如:

schemalocation此屬性有兩個值。第乙個值是需要使用的命名空間。第二個值是供命名空間使用的 xml schema 的位置,兩者之間用空格分隔。

注意,在使用schemalocation屬性時,也需要指定該屬性來自**。

原文:

Schema和DTD的區別

schema是對xml文件結構的定義和描述,其主要的作用是用來約束xml檔案,並驗證xml檔案有效性。dtd的作用是定義xml的合法構建模組,它使用一系列的合法元素來定義文件結構。它們之間的區別有下面幾點 1 schema本身也是xml文件,dtd定義跟xml沒有什麼關係,schema在理解和實際應...

Schema和DTD的區別

schema是對xml文件結構的定義和描述,其主要的作用是用來約束xml檔案,並驗證xml檔案有效性。dtd的作用是定義xml的合法構建模組,它使用一系列的合法元素來定義文件結構。它們之間的區別有下面幾點 1 schema本身也是xml文件,dtd定義跟xml沒有什麼關係,schema在理解和實際應...

Schema和DTD的區別

schema是對xml文件結構的定義和描述,其主要的作用是用來約束xml檔案,並驗證xml檔案有效性。dtd的作用是定義xml的合法構建模組,它使用一系列的合法元素來定義文件結構。它們之間的區別有下面幾點 1 schema本身也是xml文件,dtd定義跟xml沒有什麼關係,schema在理解和實際應...