XML的約兩種約束 DTD Schema

2021-06-10 02:37:52 字數 2324 閱讀 8943

在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為其設定屬性

語法格式:

屬性名1 屬性值型別 設定說明

屬性名2 屬性值型別 設定說明

……>

設定說明:

#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屬性來指定,例如:

xmlns:xsi=""

xsi:schemalocation=「 book.xsd">

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

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

基本格式:

xmlns="uri"  

JavaWeb學習筆記 (一)xml的兩種約束

1.xml約束 通過編寫乙個文件來約束xml文件的內容,以保證xml中內容的規範性。2.dtd約束 前期採用的一種約束,沒有使用xml規則,相比與schema,語法更為簡練。分為外部匯入和內部嵌入。1 外部匯入 建立dtd檔案,一般檔名與要約束的xml檔名相同。如 用stu.dtd來約束stu.xm...

xml的兩種讀法

method1 public static string getxmlnode string xmlname,string xmlpath,string key xmldocument document new xmldocument string str xmlpath xmlname xml s...

XML的兩種模式

color darkblue size medium 在xml使用過程中,往往需要對xml的有效性進行驗證。只要不違反xml格式良好的規則,就可以自由選取標記的名字,用自己習慣的方式描述事物。這就意味著用xml描述相同的事物時,不同的編寫者可能寫出含有不同標記名 採用不同結構的xml文件,這對於資料...