子單元 2-2: dtd 文件範例

22
子子子 2-2: DTD 子子子子 子子子 子子子子子子子

Upload: stephanie-ellison

Post on 31-Dec-2015

29 views

Category:

Documents


3 download

DESCRIPTION

子單元 2-2: DTD 文件範例. 王豐緒 銘傳大學資工系. 單元目標. 藉由範例 , 更多了解 DTD 的運用. 引用外部 DTD. < myMessage > Hello XML World! . ELEMENT. 至少一個. DTD. ………( 其餘省略了 …). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 子單元 2-2: DTD 文件範例

子單元 2-2:DTD 文件範例

王豐緒銘傳大學資工系

Page 2: 子單元 2-2: DTD 文件範例

單元目標

藉由範例 , 更多了解 DTD 的運用

Page 3: 子單元 2-2: DTD 文件範例

引用外部 DTD

<?xml version = “1.0” ?>

<!DOCTYPE myMessage SYSTEM “intro.dtd” >

<myMessage><message> Hello XML World! </message>

</myMessage>

Page 4: 子單元 2-2: DTD 文件範例

ELEMENT

< 專輯 >< 名稱 > 日部落 ! </ 名稱 >

< 曲名 > 我愛 </ 曲名 >< 長度 >10</ 長度 >

< 曲名 > 命運交響曲 </ 曲名 >< 長度 >20</ 長度 >

</ 專輯 >

<!ELEMENT 專輯 ( 名稱 , ( 曲名 , 長度 )+)>………( 其餘省略了… )

DTD

XML()

至少一個

Page 5: 子單元 2-2: DTD 文件範例

ELEMENT

< 圖書館 >< 書 > XML Programming </ 書 >< 書 > C Programming</ 書 >< 書 > OldMan and Sea</ 書 >

</ 圖書館 >

<!ELEMENT 圖書館 ( 書 *)>………( 其餘省略了… )

DTD

XML()

XML() < 圖書館 ></ 圖書館 >

零或 1 次以上

Page 6: 子單元 2-2: DTD 文件範例

ELEMENT

< 座位 >< 人名 > 李志中 </ 人名 >

</ 座位 >

<!ELEMENT 座位 ( 人名 ?)>………( 其餘省略了… )

DTD

XML()

XML() < 座位 ></ 座位 >

零或 1 次

Page 7: 子單元 2-2: DTD 文件範例

ELEMENT

< 班級 >< 人數 > 23 </ 人數 >< 教師 > 張大帥 </ 教師 >< 學分 >3</ 學分 >

</ 班級 >

<!ELEMENT 班級 ( 人數 , ( 教師 | 助教 +) , ( 學分 | 無 ) )>

………( 其餘省略了… )

DTD

XML()

XML()

< 班級 >< 人數 > 46 </ 人數 >< 助教 > 小珍 </ 助教 >< 助教 > 小強 </ 助教 >< 學分 >3</ 學分 >

</ 班級 >

Page 8: 子單元 2-2: DTD 文件範例

ELEMENT

< 甜甜屋 >< 果醬 > 葡萄 </ 果醬 >< 蘋果 > 美國產 </ 蘋果 >< 蘋果 > 台灣產 </ 蘋果 >< 蘋果 > 日本產 </ 蘋果 >< 填料 > 巧克力 </ 填料 >

</ 甜甜屋 >

<!ELEMENT 甜甜屋 ( 果醬 ?, 蘋果 *, ( ( 奶油 | 糖精 )+ | 填料 ) )>

………( 其餘省略了… )DTD

XML ()

XML()< 甜甜屋 >

< 糖精 > 半糖 </ 糖精 >< 奶油 > 多 </ 奶油 >< 糖精 > 少 </ 糖精 >

</ 甜甜屋 >

Page 9: 子單元 2-2: DTD 文件範例

ELEMENT

< 農場 >< 農夫 > 王小名 </ 農夫 >< 農夫 > 王大川 </ 農夫 >

< 貓 > 公主 </ 貓 >< 豬 > 大呆 </ 豬 >< 雞 > 小強 </ 雞 >

</ 農場 >

<!ELEMENT 農場 ( 農夫 +, ( 狗 * | 貓 ?), 豬 *, ( 羊 | 牛 )?, ( 雞 +| 鴨 *) )>

………( 其餘省略了… )DTD

XML ()

XML()< 農場 >

< 農夫 > 李家童 </ 農夫 >< 鴨 > 小天 </ 鴨 >< 鴨 > 小珍 </ 鴨 >

</ 農場 >

Page 10: 子單元 2-2: DTD 文件範例

EMPTY ELEMENT

< 碟子 />

<!ELEMENT 碟子 EMPTY>DTD

XML ()

XML()< 碟子 ></ 碟子 >

Page 11: 子單元 2-2: DTD 文件範例

Mixed-Content ELEMENT

<myMessage>Hello!<message> Jane met John yesterday</message>

and<message>John slept for 30 hours</message>

</myMessage >

<!ELEMENT myMessage (#PCDATA | message)* >………( 其餘省略了… )

DTD

XML ()

Page 12: 子單元 2-2: DTD 文件範例

ANY ELEMENT

<school>MCU is a double-campus University.<message> One in Taipei</message> and<message>the other in Taoyuan</message>

</school>

<!ELEMENT school ANY ><!ELEMENT myMessage (#PCDATA | message)* >………( 其餘省略了…但沒有定義 addr 元素 )

DTD

XML ()

XML ()

<school>MCU is a double-campus University.<message> One in Taipei</message> and<message>the other in Taoyuan</message><addr>Taipei</addr>

</school>

Page 13: 子單元 2-2: DTD 文件範例

遞迴元素 ?

DTD 可以定義遞迴元素嗎 ?<!ELEMENT ancestor (ancestor* | father) ><!ELEMENT father (#PCDATA) >

<ancestor> <ancestor> <father>John</father> </ancestor> <ancestor> <ancestor> <father>John</father> </ancestor> </ancestor></ancestor>

XML(?)

DTD

Page 14: 子單元 2-2: DTD 文件範例

ATTLIST

<x y=“ABC”></x >

<!ELEMENT x EMPTY><!ATTLIST x y CDATA #REQUIRED>

DTD

XML ()

任何字元 ( 但不包括限定字 )

屬性值一定要提供

Page 15: 子單元 2-2: DTD 文件範例

ATTLIST

<message>number</message >

<!ELEMENT message (#PCDATA) ><!ATTLIST message number CDATA #REQUIRED>

DTD

XML ()

<message number=“1234”>number</message >XML ()

Page 16: 子單元 2-2: DTD 文件範例

ATTLIST

<address zip=“112”>XXX YYY ZZZ</address >

<!ELEMENT address (#PCDATA) ><!ATTLIST address zip CDATA #FIXED “112”>

DTD

XML ()

屬性值是固定不變

< address zip=“1234”>number</ address >XML ()

<address>XXX YYY ZZZ</address >XML ()

固定屬性值 112 不能改變

Page 17: 子單元 2-2: DTD 文件範例

ATTLIST

<shipping id=“s112”>XXX</shipping ><book shippedby=“s112”>XXX</book >

<!ELEMENT shipping (#PCDATA) ><!ATTLIST shipping id ID #REQUIRED ><!ELEMENT book (#PCDATA) ><!ATTLIST book shippedby IDREF #IMPLIED >

DTD

XML ()

屬性值若未給 , 由應用系統決定

<shipping id=“112”>XXX</shipping ><book shippedby=“112”>XXX</book >

XML ()

指到其他元素的 ID 值 (tokenized value)

Tokenized value?

Page 18: 子單元 2-2: DTD 文件範例

ATTLIST

<club phone=“555-111-222”>XXX</club >

<!ELEMENT club (#PCDATA) ><!ATTLIST club phone NMTOKEN #REQUIRED >

DTD

XML ()

XML ()

(name token)

<club phone=“555 111 222”>XXX</lub >

Page 19: 子單元 2-2: DTD 文件範例

ATTLIST

<person gender=“M”>XXX</person >

<!ELEMENT person (#PCDATA) ><!ATTLIST person gender (M | F) “F” >

DTD

XML ()

XML ()

( 預設值 )

<person gender=“Male”>XXX</person >

只能選 M 或 F

只能夠是 M 或 F

Page 20: 子單元 2-2: DTD 文件範例

ENTITY

<useAnEntity>&digits;</useAnEntity >

<!ENTITY assoc “&#1571;&#1587;&#1617;” ><!ENTITY digits “0123456789” >

DTD

XML ()

<useAnEntity>digit</useAnEntity >

宣告一般 entity

只有 digit 這個值 , 而非 0123456789

<useAnEntity y=“&digits;”>xxxx</useAnEntity >XML ()

XML ()

Page 21: 子單元 2-2: DTD 文件範例

External ENTITY<!NOTATION html SYSTEM “iexplore.exe” ><!ENTITY city SYSTEM “tour.html” NDATA html >

<!ELEMENT company (#PCDATA) ><!ATTLIST company tour ENTITY #REQUIRED>

DTD

宣告外部 entity

一定要是外部 entity

<company tour = “city” >XXXX</company>XML

Page 22: 子單元 2-2: DTD 文件範例

單元複習

我們列舉了一些 DTD 的範例› 元素› 屬性› 實體