radha
Uploaded by
43 SLIDES
556 VIEWS
430LIKES

第 4 章 DTD 文件的建立

DESCRIPTION

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

1 / 43

Download Presentation

第 4 章 DTD 文件的建立

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 4 章 DTD文件的建立

  2. XML文件的驗證 • XML文件的兩大原則 - 符合規格(well-formed)、可驗證(valid) • 符合規格:意即XML文件內容,符合W3C的XML文件標準,這也就是第2章的主要內容。 • 可驗證:符合結構要求的文件稱為可驗證,亦可稱為正確合法的XML文件。這些XML文件將被規範必須存在哪些元素,元素又由哪些元素所排列、組合而成,以及組成元素的個數…等。

  3. XML文件的驗證 • 所謂XML文件的結構,包含了以下幾個重點: • 元素的名稱 • 各元素的排列順序 • 元素必須包含或可包含的子元素 • 描述元素的屬性與屬性值 • 元素的個數 • 元素的資料類型

  4. XML文件的驗證 • 目前建立驗證文件的方式有兩種: • DTD(Document Type Definition,譯為文件類型宣告) • XML Schema

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

  6. DTD的基本觀念 - DTD文件的架構 文件的第3列至第12列,為驗證XML文件的DTD文件 第15列至第30列,為XML文件的內容。

  7. DTD的基本觀念 - DTD文件的架構 • 驗證XML文件的DTD文件,定義語法為: <!DOCTYPE 文件元素名稱 [ DTD規則 …… ]>

  8. DTD的基本觀念 - 執行文件的驗證 • 下載驗證工具的網址為『http://www.microsoft.com/ downloads/details.aspx?FamilyId=D23C1D2C-1571-4D61-BDA8-ADF9F6849DF9&displaylang=en』。

  9. DTD的基本觀念 - 執行文件的驗證

  10. DTD的基本觀念 - 執行文件的驗證

  11. DTD的基本觀念 - 外部、內部DTD文件 • 外部DTD文件的第1列與一般XML文件一樣,但必須加上如下所述的XML文件宣告。 <?xml version="版本" encoding="編碼方式" standalone="是否為獨立文件"?> • 在XML文件內,則透過以下的語法宣告,引用外部DTD文件。 <!DOCTYPE 文件元素名稱 SYSTEM | PUBLIC "外部DTD文件的URI">

  12. DTD的基本觀念 - 外部、內部DTD文件 • 以下章節將以bookdtd.dtd說明DTD的宣告語法。 • 以下為bookch4.xml,在第3列將運用『<!DOCTYPE…>』引用外部DTD文件。

  13. 元素宣告 - 元素宣告的基本語法 • 定義XML文件內的元素時,需使用ELEMENET標籤,語法如下: <!ELEMENT 元素名稱 內容模型>

  14. 元素宣告 - 一般元素的宣告 • 運用ELEMENT標籤宣告一般元素的語法時,將以括號『( )』標示元素的內容模型宣告。 • 語法如下: <!ELEMENT 元素名稱 (內容模型宣告)>

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

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

  17. 元素宣告 - 一般元素的宣告 • 空元素:在DTD的元素定義中,宣告空元素時,需使用EMPTY關鍵字。 <!ELEMENT 元素名稱 EMPTY> • 以下敘述將宣告major_in元素,是一個空元素。 <!ELEMENT major_in EMPTY>

  18. 元素宣告 - 一般元素的宣告 • 不限制內容的元素:對於一些結構複雜找不到規則的元素,則僅能以ANY關鍵字,宣告不限制該元素的內容。語法如下: <!ELEMENT 元素名稱 ANY> • 所謂的不限制內容,包含以下3種含意: • 該元素可包含任何在DTD文件中,宣告的元素。 • 元素所包含的子元素,其出現順序、次數均不受限制 • 元素中可出現需解析文字(#PCDATA),且可與子元素交錯出現

  19. 實體的宣告 - 什麼是實體 • 所謂的實體(Entity)就是事先完成宣告或定義的資料,在XML文件中,可以透過引用的方式,將實體所代表的資料插入文件內文。

  20. 實體的宣告 - 內部實體與外部實體 • XML文件宣告的實體,被稱為內部實體,宣告語法如下: <!ENTITY 實體名稱 實體內容> • 以下敘述將定義publisher實體的內容為『文魁資訊』。 • XML文件內引用實體的語法如下: &實體名稱; • 以下敘述將在publish_by元素內,引用publisher實體。

  21. 實體的宣告 - 內部實體與外部實體 • 外部實體:將內容儲存在XML文件之外其他檔案的實體,稱之為外部實體。 • 在XML文件中,引用儲存外部實體檔案的語法如下: <!ENTITY 實體名稱 SYSTEM|PUBLIC 實體檔案的URI>

  22. 實體的宣告 - 內部實體與外部實體 • 外部實體:將內容儲存在XML文件之外其他檔案的實體,稱之為外部實體。 • 在XML文件中,引用儲存外部實體檔案的語法如下: <!ENTITY 實體名稱 SYSTEM|PUBLIC 實體檔案的URI> • 在XML文件內引用外部實體的語法,與內部實體並無不同,如下述: &實體名稱;

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

  24. 實體的宣告- 可解析實體與不可解析實體 • 依照實體的儲存位置,將實體區分為內部實體與外部實體。 • 依照實體的內容是否可被剖析器解析,則可分為可解析(parsed)實體與不可解析(unparsed)實體。 • XML剖析器無法解析不可解析實體,定義時,必須運用NOTATION標籤,宣告可解讀該檔案的應用程式。語法如下: <!NOTATION 格式 SYSTEM|PUBLIC 應用程式的URI> <!ENTITY 實體名稱 SYSTEM|PUBLIC 檔案的URI 格式>

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

  26. 實體的宣告 - 參數型實體參考 • 參數實體參考的宣告與使用均限於外部DTD,在使用上,除與一般實體參考相同地,可用於其他實體的宣告外,還可用於元素的宣告。 • 參數實體參考的宣告語法與一般實體參考相同,僅增加『%』符號,語法如下: <!ENTITY % 實體名稱 實體內容>

  27. 實體的宣告 - 參數型實體參考 • 參數實體參考的宣告與使用均限於外部DTD,在使用上,除與一般實體參考相同地,可用於其他實體的宣告外,還可用於元素的宣告。 • 參數實體參考的宣告語法與一般實體參考相同,僅增加『%』符號,語法如下: <!ENTITY % 實體名稱 實體內容> • 以下敘述將宣告TEXT為代替『(#PCDATA)』的參數型實體參考,並運用於元素型態的宣告。

  28. 屬性宣告 - 屬性宣告的語法 • 對於元素的屬性,DTD的宣告語法如下: <!ATTLIST 元素名稱 屬性名稱 屬性值型態 內定值>

  29. 屬性宣告 - 屬性值型態 列舉:以列舉方式設定屬性的設定值時,將限定屬性可設定的值。設定語法如下: (屬性值1, 屬性值2, …) 以下敘述將定義book元素的sale屬性值,可被設定為『Y』、『N』。

  30. 屬性宣告 - 屬性值型態 CDATA:CDATA的原文為Character Data,也就是一般文字的意思。以下敘述將宣告book元素publisher屬性,其屬性值的型態為CDATA。

  31. 屬性宣告 - 屬性值型態 ID:代表此屬性值在XML文件內的每個設定值,都必須為不可重複的唯一值。以下敘述將宣告book元素isbn屬性的型態為ID。 由於ID類型的屬性值,必須符合XML名稱(XML name,2-1-3節)的要求,屬性值的第1個字元,不可以是數字。故設定此類屬性值時,變通的方法是在編號前加上底線『_』,如下述的isbn屬性。 或者在編號前加上英文,如下述的id屬性。

  32. 屬性宣告 - 屬性值型態 IDRF:IDRF的意義為ID Reference(參考至ID類型的資料),屬性值類型為IDRF的屬性,將參照到同一份XML文件內,屬性值型態為ID之其他屬性。以下敘述將定義publish_by元素pid屬性之屬性值為IDRF。

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

  34. 屬性宣告 - 屬性值型態 NMTOKEN、NMTOKENS:屬性值型態符合XML名稱記號(XML name token)規則的屬性,宣告時,必須使用NMTOKEN宣告。若屬性值為數個以空白隔開的NMTOKEN,則型態需宣告為NMTOKENS。所謂符合XML名稱記號要求的字串,其內容將由『英文字母』、『數字』、『-』、『_』、『.』與『:』組成。 以下敘述將宣告屬性型態為NMTOKEN。 以下敘述則宣告屬性型態為NMTOKENS。

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

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

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

  38. 屬性宣告 - 屬性的內定值 #FIXED:定義屬性必須設定,且為固定值。設定時,需在屬性值型態後,使用『#FIXED』關鍵字,並運用引號(")標示固定值,語法如下: <!ATTLIST 元素名稱 屬性名稱 屬性值型態 #FIXED 固定值> 以下敘述,將定義author元素penname屬性的值為固定值 – 位元文化。

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

  40. 屬性宣告 - 屬性的內定值 #REQUIRED:設定屬性必須設定值,若未設定將產生錯誤。設定時,僅需在屬性型態的宣告後,運用『#REQUIRED』關鍵字。 以下敘述,將定義publisher元素的name屬性一定要設定。

  41. 屬性宣告 - 內定屬性 xml:lang:xmk:lang屬性用於標示該元素內容所採用的語言。透過xml:lang,應用軟體可以得知元素所採用的語言,協助應用軟體處理元素內容,如:在XML文件搜尋英文字串時,便可略過內容為中文的元素。 相信有不少人看到xml:lang會聯想到XML文件宣告的encoding屬性。encoding屬性用於指定XML文件使用的編碼系統,這可不代表文件內容使用的語言。 在DTD文件內定義元素xml:lang屬性時,屬性值型態一般設定為NMTOKEN,語法如下: <!ATTLIST 元素名稱 xml:lang NMTOKEN 內定值>

  42. 屬性宣告 - 內定屬性 以下敘述將宣告xml:lang屬性的型態為NMTOKEN,預設值為華語(zh)。 您亦可運用列舉的方式,設定xml:lang屬性的設定值,以及預設值。

  43. 屬性宣告 - 內定屬性 xml:space:xml:space屬性用於定義應用程式如何處理空白字元,處理方式有兩種: 一為以剖析器的預設方式處理,屬性設定值為default。 二為將空白字元保留,交給應用程式處理,屬性設定值為preserve。

More Related