220 likes | 309 Views
子單元 2-2: DTD 文件範例. 王豐緒 銘傳大學資工系. 單元目標. 藉由範例 , 更多了解 DTD 的運用. 引用外部 DTD. <?xml version = “1.0” ?> <! DOCTYPE myMessage SYSTEM “intro.dtd” > < myMessage > <message> Hello XML World! </message> </ myMessage >. ELEMENT. 至少一個. DTD. <!ELEMENT 專輯 ( 名稱 , ( 曲名 , 長度 ) +) > ………( 其餘省略了 …).
E N D
子單元2-2:DTD文件範例 王豐緒 銘傳大學資工系
單元目標 • 藉由範例,更多了解DTD的運用
引用外部DTD <?xml version = “1.0” ?> <!DOCTYPEmyMessageSYSTEM “intro.dtd” > <myMessage> <message> HelloXMLWorld! </message> </myMessage>
ELEMENT 至少一個 DTD <!ELEMENT 專輯 (名稱, (曲名, 長度)+)> ………(其餘省略了…) <專輯> <名稱> 日部落! </名稱> <曲名>我愛</曲名> <長度>10</長度> <曲名>命運交響曲</曲名> <長度>20</長度> </專輯> XML()
ELEMENT 零或1次以上 DTD <!ELEMENT 圖書館(書*)> ………(其餘省略了…) <圖書館> <書> XML Programming </書> <書> CProgramming</書> <書> OldManand Sea</書> </圖書館> XML() XML() <圖書館></圖書館>
ELEMENT 零或1次 DTD <!ELEMENT 座位(人名?)> ………(其餘省略了…) <座位> <人名> 李志中</人名> </座位> XML() XML() <座位></座位>
ELEMENT <!ELEMENT 班級(人數, (教師| 助教+) , (學分| 無) )> ………(其餘省略了…) DTD <班級> <人數> 23 </人數> <教師>張大帥</教師> <學分>3</學分> </班級> XML() <班級> <人數> 46 </人數> <助教> 小珍 </助教> <助教> 小強</助教> <學分>3</學分> </班級> XML()
ELEMENT <!ELEMENT 甜甜屋(果醬?, 蘋果*, ( (奶油 | 糖精)+|填料) )> ………(其餘省略了…) DTD <甜甜屋> <果醬> 葡萄 </果醬> <蘋果>美國產</蘋果> <蘋果>台灣產</蘋果> <蘋果>日本產</蘋果> <填料>巧克力</填料> </甜甜屋> XML () <甜甜屋> <糖精> 半糖 </糖精> <奶油> 多 </奶油> <糖精> 少</糖精> </甜甜屋> XML()
ELEMENT <!ELEMENT 農場 (農夫+, (狗* | 貓?), 豬*, ( 羊| 牛)?, (雞+| 鴨*) )> ………(其餘省略了…) DTD <農場> <農夫> 王小名</農夫> <農夫> 王大川</農夫> <貓>公主</貓> <豬>大呆</豬> <雞>小強</雞> </農場> XML () <農場> <農夫> 李家童</農夫> <鴨> 小天 </鴨> <鴨> 小珍</鴨> </農場> XML()
EMPTY ELEMENT <!ELEMENT 碟子 EMPTY> DTD XML () <碟子/> <碟子> </碟子> XML()
Mixed-Content ELEMENT <!ELEMENT myMessage(#PCDATA | message)* > ………(其餘省略了…) DTD <myMessage> Hello! <message> Jane met John yesterday</message> and <message>John slept for 30 hours</message> </myMessage > XML ()
ANY ELEMENT <!ELEMENT schoolANY > <!ELEMENT myMessage(#PCDATA | message)* > ………(其餘省略了…但沒有定義 addr元素) DTD <school> MCU is a double-campus University. <message> One in Taipei</message> and <message>the other in Taoyuan</message> </school> XML () <school> MCU is a double-campus University. <message> One in Taipei</message> and <message>the other in Taoyuan</message> <addr>Taipei</addr> </school> XML ()
遞迴元素? • DTD可以定義遞迴元素嗎? <!ELEMENT ancestor (ancestor* | father) > <!ELEMENT father (#PCDATA) > DTD <ancestor> <ancestor> <father>John</father> </ancestor> <ancestor> <ancestor> <father>John</father> </ancestor> </ancestor> </ancestor> XML(?)
ATTLIST <!ELEMENT xEMPTY> <!ATTLIST xyCDATA#REQUIRED> DTD 屬性值一定要提供 任何字元(但不包括限定字) <xy=“ABC”> </x > XML ()
ATTLIST <!ELEMENT message(#PCDATA) > <!ATTLIST messagenumberCDATA#REQUIRED> DTD XML () <message>number</message > XML () <messagenumber=“1234”>number</message >
ATTLIST <!ELEMENT address(#PCDATA) > <!ATTLIST addresszipCDATA#FIXED “112”> DTD 屬性值是固定不變 XML () <address zip=“112”>XXX YYY ZZZ</address > XML () <address>XXX YYY ZZZ</address > XML () < addresszip=“1234”>number</ address > 固定屬性值112不能改變
ATTLIST <!ELEMENT shipping(#PCDATA) > <!ATTLIST shippingidID#REQUIRED > <!ELEMENT book(#PCDATA) > <!ATTLIST bookshippedbyIDREF#IMPLIED > DTD 屬性值若未給,由應用系統決定 指到其他元素的ID值 (tokenized value) XML () <shippingid=“s112”>XXX</shipping > <bookshippedby=“s112”>XXX</book> Tokenized value? XML () <shippingid=“112”>XXX</shipping > <bookshippedby=“112”>XXX</book >
ATTLIST <!ELEMENT club(#PCDATA) > <!ATTLIST clubphoneNMTOKEN#REQUIRED > DTD (name token) XML () <clubphone=“555-111-222”>XXX</club> XML () <clubphone=“555 111 222”>XXX</lub>
ATTLIST <!ELEMENT person(#PCDATA) > <!ATTLIST persongender(M | F)“F” > DTD (預設值) 只能選M或F XML () <person gender=“M”>XXX</person > XML () <persongender=“Male”>XXX</person > 只能夠是M或F
ENTITY <!ENTITY assoc“أسّ” > <!ENTITY digits“0123456789” > DTD 宣告一般entity XML () <useAnEntity>&digits;</useAnEntity > XML () <useAnEntity y=“&digits;”>xxxx</useAnEntity > XML () <useAnEntity>digit</useAnEntity > 只有digit這個值, 而非0123456789
External ENTITY <!NOTATION html SYSTEM“iexplore.exe”> <!ENTITY citySYSTEM “tour.html” NDATAhtml > <!ELEMENTcompany(#PCDATA) > <!ATTLISTcompany tour ENTITY#REQUIRED> DTD 宣告外部entity 一定要是外部entity XML <companytour = “city” >XXXX</company>
單元複習 • 我們列舉了一些DTD的範例 • 元素 • 屬性 • 實體