子單元 2-2: dtd 文件範例
DESCRIPTION
子單元 2-2: DTD 文件範例. 王豐緒 銘傳大學資工系. 單元目標. 藉由範例 , 更多了解 DTD 的運用. 引用外部 DTD. < myMessage > Hello XML World! . ELEMENT. 至少一個. DTD. ………( 其餘省略了 …). - PowerPoint PPT PresentationTRANSCRIPT
子單元 2-2:DTD 文件範例
王豐緒銘傳大學資工系
單元目標
藉由範例 , 更多了解 DTD 的運用
引用外部 DTD
<?xml version = “1.0” ?>
<!DOCTYPE myMessage SYSTEM “intro.dtd” >
<myMessage><message> Hello XML World! </message>
</myMessage>
ELEMENT
< 專輯 >< 名稱 > 日部落 ! </ 名稱 >
< 曲名 > 我愛 </ 曲名 >< 長度 >10</ 長度 >
< 曲名 > 命運交響曲 </ 曲名 >< 長度 >20</ 長度 >
</ 專輯 >
<!ELEMENT 專輯 ( 名稱 , ( 曲名 , 長度 )+)>………( 其餘省略了… )
DTD
XML()
至少一個
ELEMENT
< 圖書館 >< 書 > XML Programming </ 書 >< 書 > C Programming</ 書 >< 書 > OldMan and Sea</ 書 >
</ 圖書館 >
<!ELEMENT 圖書館 ( 書 *)>………( 其餘省略了… )
DTD
XML()
XML() < 圖書館 ></ 圖書館 >
零或 1 次以上
ELEMENT
< 座位 >< 人名 > 李志中 </ 人名 >
</ 座位 >
<!ELEMENT 座位 ( 人名 ?)>………( 其餘省略了… )
DTD
XML()
XML() < 座位 ></ 座位 >
零或 1 次
ELEMENT
< 班級 >< 人數 > 23 </ 人數 >< 教師 > 張大帥 </ 教師 >< 學分 >3</ 學分 >
</ 班級 >
<!ELEMENT 班級 ( 人數 , ( 教師 | 助教 +) , ( 學分 | 無 ) )>
………( 其餘省略了… )
DTD
XML()
XML()
< 班級 >< 人數 > 46 </ 人數 >< 助教 > 小珍 </ 助教 >< 助教 > 小強 </ 助教 >< 學分 >3</ 學分 >
</ 班級 >
ELEMENT
< 甜甜屋 >< 果醬 > 葡萄 </ 果醬 >< 蘋果 > 美國產 </ 蘋果 >< 蘋果 > 台灣產 </ 蘋果 >< 蘋果 > 日本產 </ 蘋果 >< 填料 > 巧克力 </ 填料 >
</ 甜甜屋 >
<!ELEMENT 甜甜屋 ( 果醬 ?, 蘋果 *, ( ( 奶油 | 糖精 )+ | 填料 ) )>
………( 其餘省略了… )DTD
XML ()
XML()< 甜甜屋 >
< 糖精 > 半糖 </ 糖精 >< 奶油 > 多 </ 奶油 >< 糖精 > 少 </ 糖精 >
</ 甜甜屋 >
ELEMENT
< 農場 >< 農夫 > 王小名 </ 農夫 >< 農夫 > 王大川 </ 農夫 >
< 貓 > 公主 </ 貓 >< 豬 > 大呆 </ 豬 >< 雞 > 小強 </ 雞 >
</ 農場 >
<!ELEMENT 農場 ( 農夫 +, ( 狗 * | 貓 ?), 豬 *, ( 羊 | 牛 )?, ( 雞 +| 鴨 *) )>
………( 其餘省略了… )DTD
XML ()
XML()< 農場 >
< 農夫 > 李家童 </ 農夫 >< 鴨 > 小天 </ 鴨 >< 鴨 > 小珍 </ 鴨 >
</ 農場 >
EMPTY ELEMENT
< 碟子 />
<!ELEMENT 碟子 EMPTY>DTD
XML ()
XML()< 碟子 ></ 碟子 >
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 ()
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>
遞迴元素 ?
DTD 可以定義遞迴元素嗎 ?<!ELEMENT ancestor (ancestor* | father) ><!ELEMENT father (#PCDATA) >
<ancestor> <ancestor> <father>John</father> </ancestor> <ancestor> <ancestor> <father>John</father> </ancestor> </ancestor></ancestor>
XML(?)
DTD
ATTLIST
<x y=“ABC”></x >
<!ELEMENT x EMPTY><!ATTLIST x y CDATA #REQUIRED>
DTD
XML ()
任何字元 ( 但不包括限定字 )
屬性值一定要提供
ATTLIST
<message>number</message >
<!ELEMENT message (#PCDATA) ><!ATTLIST message number CDATA #REQUIRED>
DTD
XML ()
<message number=“1234”>number</message >XML ()
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 不能改變
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?
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 >
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
ENTITY
<useAnEntity>&digits;</useAnEntity >
<!ENTITY assoc “أسّ” ><!ENTITY digits “0123456789” >
DTD
XML ()
<useAnEntity>digit</useAnEntity >
宣告一般 entity
只有 digit 這個值 , 而非 0123456789
<useAnEntity y=“&digits;”>xxxx</useAnEntity >XML ()
XML ()
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
單元複習
我們列舉了一些 DTD 的範例› 元素› 屬性› 實體