1 / 23

DTD 規則

此簡報可能會牽涉到聽眾的討論活動,也就是所謂的執行項目。因此在進行簡報時 ﹐ 可充份利用 PowerPoint 來記錄這些執行項目: 於投影片放映狀態按下滑鼠右鍵 選取 〔 會議記錄簿 〕 選取 〔 執行項目 〕 標籤 將出現的意見都記錄於此 按下 〔 確定 〕 以結束此對話方塊 在簡報進行到最後時 ﹐PowerPoint 將會自動的建立一個執行項目投影片 ﹐ 並將你所記錄的內容顯示在該投影片上. DTD 規則. [XML Lab. ] [ 黃振修 ]. 何謂 DTD ?. 文件類型定義 Document Type Definition

odell
Download Presentation

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. 此簡報可能會牽涉到聽眾的討論活動,也就是所謂的執行項目。因此在進行簡報時﹐可充份利用 PowerPoint 來記錄這些執行項目: • 於投影片放映狀態按下滑鼠右鍵 • 選取〔會議記錄簿〕 • 選取〔執行項目〕標籤 • 將出現的意見都記錄於此 • 按下〔確定〕以結束此對話方塊 • 在簡報進行到最後時﹐PowerPoint將會自動的建立一個執行項目投影片﹐並將你所記錄的內容顯示在該投影片上 DTD 規則 [XML Lab.] [黃振修]

  2. 何謂 DTD ? • 文件類型定義 • Document Type Definition • 自訂我們所使用的標籤 • 用XML來建立文件規則 • DTD就像是一本規則手冊 • 允許作者建立相同類型的新文件 • 藉由繼承可擁有與基底文件相同的特性 • Valid XML必須嚴格的遵守DTD規則

  3. DTD 結構 • 外部DTD子集 • 存在文件以外,通常是一份通用的DTD • 內部DTD子集 • 包含在文件PROLOG宣告部分 • 文件能包含兩種以上的子集 • 內部子集會被優先處理 • 可以覆蓋(override)外部子集的定義

  4. DTD 語法 • XML spec採用Backus Naur Form (BNF)定義, 相關文法如下: • XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' • SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"')) • doctypedecl ::= ‘<!DOCTYPE’ S Name (S ExternalID)? S? (‘[’ (markupdecl | PEReference | S)* ‘]’ S?)? ‘>’ • ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral

  5. 內部 DTD (#1) <?xml version=“1.0”?> <!DOCTYPE EMAIL [ <!ELEMENT EMAIL (TO, FROM, CC, SUBJECT, BODY)> <!ELEMENT TO (#PCDATA)> <!ELEMENT FROM (#PCDATA)> <!ELEMENT CC (#PCDATA)> <!ELEMENT SUBJECT (#PCDATA)> <!ELEMENT BODY (#PCDATA)> ]> <EMAIL> <TO>chenhsiu@gens.dhs.org</TO> <FROM>b87506017@csie.ntu.edu.tw</FROM> <CC>emacs@ms38.url.com.tw</CC> <SUBJECT>Hello XML</SUBJECT> <BODY>blah, blah</BODY> </EMAIL>

  6. 內部 DTD (#2) • 用IE來檢視XML文件

  7. 內部 DTD (#3) • 在上面的例子中,XML parser會用DTD來驗證文件的有效性(valid) • 直接將elements定義在doctypedecl方括弧 [] 內部 • 內部子集會被優先處理 • 若文件包含外部集內部子集, 會覆蓋(override)先前外部字集的定義

  8. 外部 DTD (#1) <!DOCTYPE EMAIL (SYSTEM|PUCLIB) “email.dtd”> • 外部實體 • SYSTEM緊接在URI之後,用來告訴處理器哪裡可以找到宣告中被參照的物件 • 對廣大的使用者而言,一些DTD已經被確立為標準是有效的,這時就使用PUCLIB關鍵字,後面應接一個有效的標準函式庫 • 可把文件對實體的宣告寫在另一個外部檔案,使用時直接參照外部實體

  9. 外部 DTD (#2) • 使用外部DTD的例子 • example.xml<?xml version=“1.0” encoding=“BIG5” standalone=“yes”?><!DOCTYPE EMAIL SYSTEM “email.dtd”>.... • email.dtd<?xml version=“1.0” encoding=“ISO-8859-1”?><!ELEMENT EMAIL (TO, FROM, CC, SUBJECT, BODY)> <!ELEMENT TO (#PCDATA)> <!ELEMENT FROM (#PCDATA)> <!ELEMENT CC (#PCDATA)> <!ELEMENT SUBJECT (#PCDATA)> <!ELEMENT BODY (#PCDATA)>

  10. 元素宣告 • Grammar • elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>‘ • contentspec ::= 'EMPTY' | 'ANY' | Mixed | children • Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' |'(' S? '#PCDATA' S? ')‘ • children ::= (choice | seq) ('?' | '*' | '+')?

  11. 元素宣告釋義(#1) • EMPTY • 用來宣告不能包含任何內容的元素ex: <BR/> • ANY • 可包含任何DTD允許的內容並以任何順序出現 • 混合型(Mixed) • 宣告為一組可選擇的內容,以 | 區隔, ex: <!ELEMENT EXAMPLE (#PCDATA|x|y|z)*>

  12. 元素宣告釋義(#2) • #PCDATA 可解析的字元資料,包含標籤,會被XML parser處理的資訊 • #CDATA不可解析的字元資料,即普通文字,可包含作為保留標籤的字元, ex: <![CDATA[<TEST>LaLaLa</TEST>]]>

  13. 元素宣告釋義(#3) • 結構符號

  14. 屬性宣告 • Grammar • AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' • AttDef ::= S Name S AttType S DefaultDecl • AttType ::= StringType | TokenizedType | EnumeratedType • TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' • DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)

  15. 屬性概念 • 屬性提供關於元素或元素內容的相關資訊,例如: <font color=“red”>TEST</font>即表示紅色是TEST字串的屬性 • 屬性通常包含了重要訊息,但卻不屬於元素內容的一部份 • 屬性宣告可出現在DTD中任何部分,但是放在較近於對應的元素宣告處,比較易於為人了解

  16. 例子(續) ... <!ELEMENT EMAIL (TO, FROM, CC, BCC, SUBJECT, BODY)> <!ATTLIST EMAIL LANGUAGE (Western|Greek|Chinese) “Chinese”ENCRYPTED CDATA #IMPLIEDPRIORITY (NORMAL|LOW|HIGH) “NORMAL”> ... <!ELEMENT BCC (#PCDATA)> <!ATTLIST BCC HIDDEN CDATA #FIXED “TRUE”> ...

  17. 內部實體 <!ENTITY EntityName EntityDefinition> • 內部實體在DTD中被宣告,並包含文件會用到內容 • 例如:<!ENTITY SIGNATURE “ChenHsiu”>會把SIGNATURE這個實體加到DTD中,並且日後這個實體在文件中被參照時,會被置換成實體的內容: ChenHsiu <BODY> Hello, This is &SIGNATURE;! </BODY>

  18. 參數實體 <!ENTITY % HIDDEN “CDATA #FIXED “TRUE””> • 參數實體和一般實體相同,但是在語意方面有顯著不同 • 參數實體在DTD中被宣告,並包含“DTD中”會用到內容 • 宣告過後的實體可在“DTD中”的其他地方被參考到 <!ATTLIST BCC HIDDEN %HIDDEN;>

  19. INCLUDE & IGNORE <![IGNORE[DTD section]]> <![INCLUDE[DTD section]]> • IGNORE以及INCLUDE關鍵字可以讓使用者將DTD的某部分關閉或是開啟 • 允許作者在追蹤各種不同的變化時,可測試各種不同的結構 <![IGNORE[<!ELEMENT BCC(#PCDATA)> <!ATTLIST BCC HIDDEN CDATA #FIXED “TRUE”>]]> <![INCLUDE[<!ELEMENT SUBJECT (#PCDATA)>]]>

  20. INCLUDE & IGNORE <![IGNORE[DTD section]]> <![INCLUDE[DTD section]]> • IGNORE以及INCLUDE關鍵字可以讓使用者將DTD的某部分關閉或是開啟 • 允許作者在追蹤各種不同的變化時,可測試各種不同的結構 <![IGNORE[<!ELEMENT BCC(#PCDATA)> <!ATTLIST BCC HIDDEN CDATA #FIXED “TRUE”>]]> <![INCLUDE[<!ELEMENT SUBJECT (#PCDATA)>]]>

  21. 處理指令 • 處理指令(PI)提供指令給正在處理這份文件的應用程式 • PI通常出現在一份文件的前言中,但是他們能被放在XML文件中任意地方 <?AVI CODEC=“VIEDO1” COLORS=“256”?> <?WAV COMPRESSOR=“ADPCM” RESOLUTION=“16”?>

  22. 必要的標籤宣告 • 一份格式正確(well-formed)的文件不需要讀取DTD • 就算格式正確的文件中,每個外部實體仍需被宣告. parser可能不需要處理外部DTD,但是仍可能需要處理內部DTD • 必須在XML中加入必要的標籤宣告,我們稱為RMD • NONE:皆不處理DTD • INTERNAL:只處理內部DTD • ALL:必須處理任何有效的內部外部DTD

  23. 語彙 • XML語彙是一組實際元素與特殊文件類型的結構,在DTD中定義的語彙是給規則書用的 • 頻道定義格式 • 開放金融資訊交換 • 開放軟體描述 • 電子資料交換

More Related