Download presentation
Presentation is loading. Please wait.
Published byNisyaanthan Singh Modified 5年之前
1
此簡報可能會牽涉到聽眾的討論活動,也就是所謂的執行項目。因此在進行簡報時﹐可充份利用 PowerPoint 來記錄這些執行項目:
於投影片放映狀態按下滑鼠右鍵 選取〔會議記錄簿〕 選取〔執行項目〕 標籤 將出現的意見都記錄於此 按下〔確定〕以結束此對話方塊 在簡報進行到最後時﹐PowerPoint將會自動的建立一個執行項目投影片﹐並將你所記錄的內容顯示在該投影片上 DTD 規則 [XML Lab.] [黃振修]
2
何謂 DTD ? 文件類型定義 用XML來建立文件規則 Document Type Definition 自訂我們所使用的標籤
允許作者建立相同類型的新文件 藉由繼承可擁有與基底文件相同的特性 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 (TO, FROM, CC, SUBJECT, BODY)> <!ELEMENT TO (#PCDATA)> <!ELEMENT FROM (#PCDATA)> <!ELEMENT CC (#PCDATA)> <!ELEMENT SUBJECT (#PCDATA)> <!ELEMENT BODY (#PCDATA)> ]> < > <SUBJECT>Hello XML</SUBJECT> <BODY>blah, blah</BODY> </ >
6
內部 DTD (#2) 用IE來檢視XML文件
7
內部 DTD (#3) 在上面的例子中,XML parser會用DTD來驗證文件的有效性(valid)
直接將elements定義在doctypedecl 方括弧 [] 內部 內部子集會被優先處理 若文件包含外部集內部子集, 會覆蓋(override)先前外部字集的定義
8
外部 DTD (#1) 外部實體 可把文件對實體的宣告寫在另一個外部檔案,使用時直接參照外部實體
<!DOCTYPE (SYSTEM|PUCLIB) “ .dtd”> 外部實體 SYSTEM緊接在URI之後,用來告訴處理器哪裡可以找到宣告中被參照的物件 對廣大的使用者而言,一些DTD已經被確立為標準是有效的,這時就使用PUCLIB關鍵字,後面應接一個有效的標準函式庫 可把文件對實體的宣告寫在另一個外部檔案,使用時直接參照外部實體
9
外部 DTD (#2) 使用外部DTD的例子 example.xml <?xml version=“1.0” encoding=“BIG5” standalone=“yes”?> <!DOCTYPE SYSTEM “ .dtd”> .... .dtd <?xml version=“1.0” encoding=“ISO ”?> <!ELEMENT (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 ANY 混合型(Mixed) 用來宣告不能包含任何內容的元素 ex: <BR/>
可包含任何DTD允許的內容 並以任何順序出現 混合型(Mixed) 宣告為一組可選擇的內容,以 | 區隔, ex: <!ELEMENT EXAMPLE (#PCDATA|x|y|z)*>
12
元素宣告釋義(#2) #PCDATA 可解析的字元資料,包含標籤,會被XML parser處理的資訊
#CDATA 不可解析的字元資料,即普通文字,可包含作為保留標籤的字元, ex: <![CDATA[<TEST>LaLaLa</TEST>]]>
13
元素宣告釋義(#3) 結構符號 () (A,B) , (A,B,C) | (A|B) ? (A?,B) * (A,B*) +
括弧內的選擇 (A,B) , 分隔串列元素 (A,B,C) | 或(可選擇) (A|B) ? 一次或不出現 (A?,B) * 零次或以上 (A,B*) + 一次或以上 (A,B,C+)
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 LANGUAGE (Western|Greek|Chinese) “Chinese” ENCRYPTED CDATA #IMPLIED PRIORITY (NORMAL|LOW|HIGH) “NORMAL”> <!ELEMENT BCC (#PCDATA)> <!ATTLIST BCC HIDDEN CDATA #FIXED “TRUE”>
17
內部實體 內部實體在DTD中被宣告,並包含文件會用到內容
<!ENTITY EntityName EntityDefinition> 內部實體在DTD中被宣告,並包含文件會用到內容 例如: <!ENTITY SIGNATURE “ChenHsiu”> 會把SIGNATURE這個實體加到DTD中,並且日後這個實體在文件中被參照時,會被置換成實體的內容: ChenHsiu <BODY> Hello, This is &SIGNATURE;! </BODY>
18
參數實體 參數實體和一般實體相同,但是在語意方面有顯著不同 參數實體在DTD中被宣告,並包含“DTD中”會用到內容
<!ENTITY % HIDDEN “CDATA #FIXED “TRUE””> 參數實體和一般實體相同,但是在語意方面有顯著不同 參數實體在DTD中被宣告,並包含“DTD中”會用到內容 宣告過後的實體可在“DTD中”的其他地方被參考到 <!ATTLIST BCC HIDDEN %HIDDEN;>
19
INCLUDE & IGNORE IGNORE以及INCLUDE關鍵字可以讓使用者將DTD的某部分關閉或是開啟
<![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以及INCLUDE關鍵字可以讓使用者將DTD的某部分關閉或是開啟
<![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 必須在XML中加入必要的標籤宣告,我們稱為RMD
就算格式正確的文件中,每個外部實體仍需被宣告. parser可能不需要處理外部DTD,但是仍可能需要處理內部DTD 必須在XML中加入必要的標籤宣告,我們稱為RMD NONE:皆不處理DTD INTERNAL:只處理內部DTD ALL:必須處理任何有效的內部外部DTD
23
語彙 XML語彙是一組實際元素與特殊文件類型的結構,在DTD中定義的語彙是給規則書用的 頻道定義格式 開放金融資訊交換 開放軟體描述
電子資料交換
Similar presentations