第 4 章 dtd 文件的建立

Post on 21-Mar-2016

65 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

第 4 章 DTD 文件的建立. XML 文件的驗證. XML 文件的兩大原則 - 符合規格 ( well-formed )、 可驗證 ( valid ) 符合規格:意即 XML 文件內容,符合 W3C 的 XML 文件標準,這也就是第 2 章的主要內容。 可驗證:符合結構要求的文件稱為可驗證,亦可稱為正確合法的 XML 文件。 這些 XML 文件將被規範必須存在哪些元素,元素又由哪些元素所排列、組合而成,以及組成元素的個數 … 等。. XML 文件的驗證. 所謂 XML 文件的結構,包含了以下幾個重點: 元素的名稱 各元素的排列順序 元素必須包含或可包含的子元素 - PowerPoint PPT Presentation

TRANSCRIPT

第 第 4 4 章 章 DTDDTD 文件的建立文件的建立

XMLXML 文件的驗證文件的驗證 XMLXML 文件的兩大原則 文件的兩大原則 - - 符合規格符合規格(( well-formewell-forme

dd )、)、可驗證可驗證(( validvalid )) 符合規格:意即符合規格:意即 XMLXML 文件內容,符合文件內容,符合 W3CW3C 的的

XMLXML 文件標準,這也就是第文件標準,這也就是第 22 章的主要內容。章的主要內容。 可驗證:符合結構要求的文件稱為可驗證,亦可稱可驗證:符合結構要求的文件稱為可驗證,亦可稱為正確合法的為正確合法的 XMLXML 文件。文件。 這些這些 XMLXML 文件將被規文件將被規範必須存在哪些元素,元素又由哪些元素所排列、範必須存在哪些元素,元素又由哪些元素所排列、組合而成,以及組成元素的個數組合而成,以及組成元素的個數……等。等。

XMLXML 文件的驗證文件的驗證 所謂所謂 XMLXML 文件的結構,包含了以下幾個重點:文件的結構,包含了以下幾個重點:

元素的名稱元素的名稱各元素的排列順序各元素的排列順序元素必須包含或可包含的子元素元素必須包含或可包含的子元素描述元素的屬性與屬性值描述元素的屬性與屬性值元素的個數元素的個數元素的資料類型元素的資料類型

XML 文件的驗證 目前建立驗證文件的方式有兩種:目前建立驗證文件的方式有兩種:

DTDDTD (( Document Type DefinitionDocument Type Definition ,譯為文件,譯為文件類型宣告)類型宣告)XML SchemaXML Schema

XMLXML 文件的驗證文件的驗證 對於驗證文件置於對於驗證文件置於 XMLXML 文件內的驗證文件,稱之文件內的驗證文件,稱之為為內部內部驗證文件。驗證文件。 若驗證文件獨立於若驗證文件獨立於 XMLXML 文件,則稱之為文件,則稱之為外部外部驗證驗證文件。文件。 對於一份附帶有以對於一份附帶有以 DTDDTD 或或 XML SchemaXML Schema 所撰寫之所撰寫之驗證文件,且文件本身符合驗證規則的驗證文件,且文件本身符合驗證規則的 XMLXML 文件,文件,稱之為稱之為 Validated XMLValidated XML 文件(可驗證的文件(可驗證的 XMLXML 文文件)。件)。

DTDDTD 的基本觀念 的基本觀念 - DTD- DTD 文件的架文件的架構構文件的第 3 列至第 12列,為驗證 XML 文件的 DTD 文件

第 15 列至第 30 列,為 XML 文件的內容。

DTDDTD 的基本觀念 的基本觀念 - DTD- DTD 文件的架文件的架構構 驗證驗證 XMLXML 文件的文件的 DTDDTD 文件,定義語法為:文件,定義語法為:

<!DOCTYPE <!DOCTYPE 文件元素名稱 文件元素名稱 [[DTDDTD 規則規則…………]>]>

DTDDTD 的基本觀念 的基本觀念 - - 執行文件的驗證執行文件的驗證 下載驗證工具的網址為下載驗證工具的網址為『『 http://www.microsoft.com/ http://www.microsoft.com/

downloads/details.aspx?FamilyId=D23C1D2C-1571-4D61-downloads/details.aspx?FamilyId=D23C1D2C-1571-4D61-BDA8-ADF9F6849DF9&displaylang=enBDA8-ADF9F6849DF9&displaylang=en 』』。。

DTDDTD 的基本觀念 的基本觀念 - - 執行文件的驗證執行文件的驗證

DTDDTD 的基本觀念 的基本觀念 - - 執行文件的驗證執行文件的驗證

DTDDTD 的基本觀念 的基本觀念 - - 外部、內部外部、內部 DTDDTD 文件文件

外部外部 DTDDTD 文件的第文件的第 11 列與一般列與一般 XMLXML 文件一樣,但必須加文件一樣,但必須加上如下所述的上如下所述的 XMLXML 文件宣告。文件宣告。<?xml version="<?xml version=" 版本版本 " encoding="" encoding=" 編碼方式編碼方式 ""

standalone="standalone=" 是否為獨立是否為獨立文件文件 "?>"?> 在在 XMLXML 文件內,則透過以下的語法宣告,引用外部文件內,則透過以下的語法宣告,引用外部 DTDDTD文件。文件。

<!DOCTYPE <!DOCTYPE 文件元素名稱 文件元素名稱 SYSTEM | PUBLIC "SYSTEM | PUBLIC " 外部外部 DTDDTD 文件文件

的的 URI">URI">

DTDDTD 的基本觀念 的基本觀念 - - 外部、內部外部、內部 DTDDTD 文件文件

以下章節將以以下章節將以 bookdtd.dtdbookdtd.dtd 說明說明 DTDDTD 的宣告語法。的宣告語法。

以下為以下為 bookch4.xmlbookch4.xml ,在第,在第 33 列將運用列將運用『『 <!DOCTYPE…<!DOCTYPE…>> 』』引用外部引用外部 DTDDTD 文件。文件。

元素宣告 元素宣告 - - 元素宣告的基本語法元素宣告的基本語法 定義定義 XMLXML 文件內的元素時,需使用文件內的元素時,需使用 ELEMENETELEMENET 標籤,標籤,語法如下:語法如下:

<!ELEMENT <!ELEMENT 元素名稱 內容模型元素名稱 內容模型 >>

元素宣告 元素宣告 - - 一般元素的宣告一般元素的宣告 運用運用 ELEMENTELEMENT 標籤宣告一般元素的語法時,將以括號標籤宣告一般元素的語法時,將以括號

『『 ( )( ) 』』標示元素的內容模型宣告。標示元素的內容模型宣告。 語法如下:語法如下:

<!ELEMENT <!ELEMENT 元素名稱 元素名稱 (( 內容模型宣告內容模型宣告 )>)>

元素宣告 元素宣告 - - 一般元素的宣告一般元素的宣告 文字元素的宣告:若元素內容僅包含需解析文字,宣告內文字元素的宣告:若元素內容僅包含需解析文字,宣告內容模型時,僅需使用容模型時,僅需使用 #PCDATA#PCDATA 關鍵字即可。以下敘述將關鍵字即可。以下敘述將宣告宣告 titletitle 元素,為僅含解析文字的文字元素。元素,為僅含解析文字的文字元素。

元素宣告 元素宣告 - - 一般元素的宣告一般元素的宣告 巢狀元素的宣告:透過巢狀元素的宣告:透過 DTDDTD 宣告包含子元素的巢狀元素時,宣告包含子元素的巢狀元素時,可以透過結構符號定義所包含子元素的排列順序及個數。可以透過結構符號定義所包含子元素的排列順序及個數。以下為宣告巢狀元素時,可用於建立內容模型的結構符號。以下為宣告巢狀元素時,可用於建立內容模型的結構符號。

元素宣告 元素宣告 - - 一般元素的宣告一般元素的宣告 空元素:在空元素:在 DTDDTD 的元素定義中,宣告空元素時,需使用的元素定義中,宣告空元素時,需使用

EMPTYEMPTY 關鍵字。關鍵字。<!ELEMENT <!ELEMENT 元素名稱 元素名稱 EMPTY>EMPTY>

以下敘述將宣告以下敘述將宣告 major_inmajor_in 元素,是一個空元素。元素,是一個空元素。<!ELEMENT major_in EMPTY><!ELEMENT major_in EMPTY>

元素宣告 元素宣告 - - 一般元素的宣告一般元素的宣告 不限制內容的元素:對於一些結構複雜找不到規則的元素,不限制內容的元素:對於一些結構複雜找不到規則的元素,則僅能以則僅能以 ANYANY 關鍵字,宣告不限制該元素的內容。語法如關鍵字,宣告不限制該元素的內容。語法如下:下:

<!ELEMENT <!ELEMENT 元素名稱 元素名稱 ANY>ANY> 所謂的不限制內容,包含以下所謂的不限制內容,包含以下 33 種含意:種含意:

該元素可包含任何在該元素可包含任何在 DTDDTD 文件中,宣告的元素。文件中,宣告的元素。 元素所包含的子元素,其出現順序、次數均不受限制元素所包含的子元素,其出現順序、次數均不受限制 元素中可出現需解析文字(元素中可出現需解析文字( #PCDATA#PCDATA ),且可與子元),且可與子元素交錯出現素交錯出現

實體的宣告 實體的宣告 - - 什麼是實體什麼是實體 所謂的實體(所謂的實體( EntityEntity )就是事先完成宣告或定義的資料,)就是事先完成宣告或定義的資料,

在在 XMLXML 文件中,可以透過引用的方式,將實體所代表的文件中,可以透過引用的方式,將實體所代表的資料插入文件內文。資料插入文件內文。

實體的宣告 實體的宣告 - - 內部實體與外部實體內部實體與外部實體 XMLXML 文件宣告的實體,被稱為內部實體,宣告語法如下:文件宣告的實體,被稱為內部實體,宣告語法如下:

<!ENTITY <!ENTITY 實體名稱 實體內容實體名稱 實體內容 >> 以下敘述將定義以下敘述將定義 publisherpublisher 實體的內容為實體的內容為『『文魁資訊文魁資訊』』。。 XMLXML 文件內引用實體的語法如下:文件內引用實體的語法如下:

&& 實體名稱實體名稱 ;; 以下敘述將在以下敘述將在 publish_bypublish_by 元素內,引用元素內,引用 publisherpublisher 實體。實體。

實體的宣告 實體的宣告 - - 內部實體與外部實體內部實體與外部實體 外部實體:將內容儲存在外部實體:將內容儲存在 XMLXML 文件之外其他檔案的實體,文件之外其他檔案的實體,稱之為外部實體。稱之為外部實體。 在在 XMLXML 文件中,引用儲存外部實體檔案的語法如下:文件中,引用儲存外部實體檔案的語法如下:

<!ENTITY <!ENTITY 實體名稱 實體名稱 SYSTEM|PUBLIC SYSTEM|PUBLIC 實體檔案的實體檔案的 URI>URI>

實體的宣告 實體的宣告 - - 內部實體與外部實體內部實體與外部實體 外部實體:將內容儲存在外部實體:將內容儲存在 XMLXML 文件之外其他檔案的實體,文件之外其他檔案的實體,稱之為外部實體。稱之為外部實體。 在在 XMLXML 文件中,引用儲存外部實體檔案的語法如下:文件中,引用儲存外部實體檔案的語法如下:

<!ENTITY <!ENTITY 實體名稱 實體名稱 SYSTEM|PUBLIC SYSTEM|PUBLIC 實體檔案的實體檔案的 URI>URI> 在在 XMLXML 文件內引用外部實體的語法,與內部實體並無不文件內引用外部實體的語法,與內部實體並無不同,如下述:同,如下述:

&& 實體名稱實體名稱 ;;

實體的宣告 實體的宣告 - - 內部實體與外部實體內部實體與外部實體 以下敘述將宣告以下敘述將宣告 e_maile_mail 實體,引用儲存於實體,引用儲存於 kings.txtkings.txt 檔的實檔的實體內容。體內容。 以下敘述,將引用以下敘述,將引用 e_maile_mail 實體。實體。

實體的宣告實體的宣告- - 可解析實體與不可解析實體可解析實體與不可解析實體

依照實體的儲存位置,將實體區分為內部實體與外部實體。依照實體的儲存位置,將實體區分為內部實體與外部實體。 依照實體的內容是否可被剖析器解析,則可分為可解析依照實體的內容是否可被剖析器解析,則可分為可解析

(( parsedparsed )實體與不可解析()實體與不可解析( unparsedunparsed )實體。)實體。 XMLXML 剖析器無法解析不可解析實體,定義時,必須運用剖析器無法解析不可解析實體,定義時,必須運用

NOTATIONNOTATION 標籤,宣告可解讀該檔案的應用程式。語法如標籤,宣告可解讀該檔案的應用程式。語法如下:下:<!NOTATION <!NOTATION 格式 格式 SYSTEM|PUBLIC SYSTEM|PUBLIC 應用程式的應用程式的

URI>URI><!ENTITY <!ENTITY 實體名稱 實體名稱 SYSTEM|PUBLIC SYSTEM|PUBLIC 檔案的檔案的 URI URI 格格

式式 >>

實體的宣告實體的宣告- - 可解析實體與不可解析實體可解析實體與不可解析實體

以下敘述將定義以下敘述將定義 A2002P_outlineA2002P_outline 為不可解析實體,引用之為不可解析實體,引用之檔案的名稱為檔案的名稱為 A2002P.docA2002P.doc ,檔案類型為,檔案類型為 docdoc ,編輯檔案的,編輯檔案的應用程式,其位置與名稱為“應用程式,其位置與名稱為“ C:\Program Files\Microsoft C:\Program Files\Microsoft Office\Office\WinWord.exe”Office\Office\WinWord.exe” 。。

實體的宣告 實體的宣告 - - 參數型實體參考參數型實體參考 參數實體參考的宣告與使用均限於外部參數實體參考的宣告與使用均限於外部 DTDDTD ,在使用上,,在使用上,除與一般實體參考相同地,可用於其他實體的宣告外,還除與一般實體參考相同地,可用於其他實體的宣告外,還可用於元素的宣告。可用於元素的宣告。 參數實體參考的宣告語法與一般實體參考相同,僅增加參數實體參考的宣告語法與一般實體參考相同,僅增加

『『 %% 』』符號,語法如下:符號,語法如下:<!ENTITY % <!ENTITY % 實體名稱 實體內容實體名稱 實體內容 >>

實體的宣告 實體的宣告 - - 參數型實體參考參數型實體參考 參數實體參考的宣告與使用均限於外部參數實體參考的宣告與使用均限於外部 DTDDTD ,在使用上,,在使用上,除與一般實體參考相同地,可用於其他實體的宣告外,還除與一般實體參考相同地,可用於其他實體的宣告外,還可用於元素的宣告。可用於元素的宣告。 參數實體參考的宣告語法與一般實體參考相同,僅增加參數實體參考的宣告語法與一般實體參考相同,僅增加

『『 %% 』』符號,語法如下:符號,語法如下:<!ENTITY % <!ENTITY % 實體名稱 實體內容實體名稱 實體內容 >>

以下敘述將宣告以下敘述將宣告 TEXTTEXT 為代替為代替『『 (#PCDATA)(#PCDATA) 』』的參數型的參數型實體參考,並運用於元素型態的宣告。實體參考,並運用於元素型態的宣告。

屬性宣告 屬性宣告 - - 屬性宣告的語法屬性宣告的語法 對於元素的屬性,對於元素的屬性, DTDDTD 的宣告語法如下:的宣告語法如下:

<!ATTLIST 元素名稱 屬性名稱 屬性值型態 內定值 >

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 列舉:列舉:以列舉方式設定屬性的設定值時,將限定屬性可設以列舉方式設定屬性的設定值時,將限定屬性可設定的值。設定語法如下:定的值。設定語法如下:

(( 屬性值屬性值 1, 1, 屬性值屬性值 2, …)2, …) 以下敘述將定義以下敘述將定義 bookbook 元素的元素的 salesale 屬性值,可被設屬性值,可被設定為定為『『 YY 』』、、『『 NN 』』。。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 CDATACDATA ::

CDATACDATA 的原文為的原文為 Character DataCharacter Data ,也就是一般文,也就是一般文字的意思。以下敘述將宣告字的意思。以下敘述將宣告 bookbook 元素元素 publisherpublisher屬性,其屬性值的型態為屬性,其屬性值的型態為 CDATACDATA 。。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 IDID :代表此屬性值在:代表此屬性值在 XMLXML 文件內的每個設定值,都必須文件內的每個設定值,都必須為不可重複的唯一值。以下敘述將宣告為不可重複的唯一值。以下敘述將宣告 bookbook 元素元素 isbnisbn 屬屬性的型態為性的型態為 IDID 。。 由於由於 IDID 類型的屬性值,必須符合類型的屬性值,必須符合 XMLXML 名稱(名稱( XML nameXML name

,, 2-1-32-1-3 節)的要求,屬性值的第節)的要求,屬性值的第 11 個字元,不可以是數字個字元,不可以是數字。故設定此類屬性值時,變通的方法是在編號前加上底線。故設定此類屬性值時,變通的方法是在編號前加上底線『『 __ 』』,如下述的,如下述的 isbnisbn 屬性。屬性。

或者在編號前加上英文,如下述的 id 屬性。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 IDRFIDRF ::

IDRFIDRF 的意義為的意義為 ID ReferenceID Reference (參考至(參考至 IDID 類型的類型的資料),屬性值類型為資料),屬性值類型為 IDRFIDRF 的屬性,將參照到同的屬性,將參照到同一份一份 XMLXML 文件內,屬性值型態為文件內,屬性值型態為 IDID 之其他屬性之其他屬性。以下敘述將定義。以下敘述將定義 publish_bypublish_by 元素元素 pidpid 屬性之屬性屬性之屬性值為值為 IDRFIDRF 。。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 IDRFS :屬性值類型 IDRFS 的屬性,將參考至 XML 文件內,數個屬性值類型為 ID 的屬性。設定時,所參照的屬性值將以空白隔開。以下敘述將定義 book元素 author 屬性的資料類型為 IDRFS 。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 NMTOKEN 、 NMTOKENS :屬性值型態符合 XML 名稱記號( XML name token )規則的屬性,宣告時,必須使用 NMTOKEN 宣告。若屬性值為數個以空白隔開的 NMTOKEN ,則型態需宣告為

NMTOKENS 。所謂符合 XML 名稱記號要求的字串,其內容將由『英文字母』、『數字』、『 - 』、『 _ 』、『 . 』與『 : 』組成。

以下敘述將宣告屬性型態為 NMTOKEN 。 以下敘述則宣告屬性型態為 NMTOKENS 。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 NOTATION :

4-4-3 節介紹了如何定義剖析器無法剖析的資料,並利用 NOTATION 標籤,定義資料的格式類型與可讀取資料的應用軟體。若屬性值的內容為利用NOTATION 宣告的資料類型時,需將型態宣告為NOTATION 。

以下敘述將定義 outline 元素 application 屬性的型態為 NOTATION 。

屬性宣告 屬性宣告 - - 屬性值型態屬性值型態 ENTITY 、 ENTITIES :屬性值類型為 ENTITY 的屬性,其屬性值將為 DTD 所定義的實體。若類型為 ENTITIES ,則屬性值將參考至數個實體,每個實體將以空白隔開。在 XML 標準中,宣告此類型的屬性,必須使用 ENTITY 與 ENTITIES 。 以下敘述,將宣告 author 元素 name 屬性的類型為

ENTITY 。 以下敘述將宣告 publisher 元素 service 屬性的類型為

ENTITIES 。

屬性宣告 屬性宣告 - - 屬性的內定值屬性的內定值 特定值:若屬性的預設值為某特定值時,只要在宣告屬性時,在屬性的型態後,運用引號(“)標示預設值即可。當元素未設定此值時,剖析器將自動填上此屬性值。 以下敘述將設定 author 元素 name 屬性的預設值

為『郭尚君』。 以下敘述則設定 book 元素 sale 屬性的值,將為

『 Y 』或『 N 』,預設值為『 Y 』。

屬性宣告 屬性宣告 - - 屬性的內定值屬性的內定值 #FIXED :定義屬性必須設定,且為固定值。設定時,需在屬性值型態後,使用『 #FIXED 』關鍵字,並運用引號( " )標示固定值,語法如下:

<!ATTLIST 元素名稱 屬性名稱 屬性值型態 #FIXED 固定值 >

以下敘述,將定義 author 元素 penname 屬性的值為固定值 – 位元文化。

屬性宣告 屬性宣告 - - 屬性的內定值屬性的內定值 #IMPLIED :不強制屬性是否被設定,欲宣告此型態屬性時,請運用『 #IMPLIED 』關鍵字。 以下敘述,將定義 author 元素的 E-Mail 屬性可設定,也可不設定。

屬性宣告 屬性宣告 - - 屬性的內定值屬性的內定值 #REQUIRED :設定屬性必須設定值,若未設定將產生錯誤。設定時,僅需在屬性型態的宣告後,運用

『 #REQUIRED 』關鍵字。 以下敘述,將定義 publisher 元素的 name 屬性一定要設定。

屬性宣告 屬性宣告 - - 內定屬性內定屬性 xml:lang :

xmk:lang 屬性用於標示該元素內容所採用的語言。透過xml:lang ,應用軟體可以得知元素所採用的語言,協助應用軟體處理元素內容,如:在 XML 文件搜尋英文字串時,便可略過內容為中文的元素。

相信有不少人看到 xml:lang會聯想到 XML 文件宣告的encoding 屬性。 encoding 屬性用於指定 XML 文件使用的編碼系統,這可不代表文件內容使用的語言。

在 DTD 文件內定義元素 xml:lang 屬性時,屬性值型態一般設定為 NMTOKEN ,語法如下:<!ATTLIST 元素名稱 xml:lang NMTOKEN 內定值 >

屬性宣告 屬性宣告 - - 內定屬性內定屬性 以下敘述將宣告 xml:lang 屬性的型態為

NMTOKEN ,預設值為華語( zh )。 您亦可運用列舉的方式,設定 xml:lang 屬性的設定值,以及預設值。

屬性宣告 屬性宣告 - - 內定屬性內定屬性 xml:space :

xml:space 屬性用於定義應用程式如何處理空白字元,處理方式有兩種:一為以剖析器的預設方式處理,屬性設定值為

default 。二為將空白字元保留,交給應用程式處理,屬性設定值為 preserve 。

top related