查看單個文章
舊 2004-06-21, 02:06 PM   #7 (permalink)
mic64
註冊會員
 
mic64 的頭像
榮譽勳章
UID - 582
在線等級: 級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時
註冊日期: 2002-12-06
VIP期限: 2007-04
住址: MIB總部
文章: 412
精華: 0
現金: 499 金幣
資產: 499 金幣
預設

XML語言


XML是SGML的簡化,讓開發人員與網站管理員可以有系統地在網頁上建構資料。

從HTML進化到XML


超文字標記語言(Hypertext Markup Language),又稱HTML,廣為網站開發人員使用,並且為大多數的網頁瀏覽器所識別。雖然HTML讓你可以控制資料出現在螢幕上的方式,但它不允許你定義標籤。當網站開發者想要從標記(markup)中取得資料,便會出現問題。

下面範例描述本章中討論的XML,其HTML輸出結果。




參考一下下面的HTML標記。它是書籍說明網頁的一部份,並顯示了書籍的出版商。3
<tr>
<td align="left" bgColor="#D7FFD7" width="391" colspan="2">
<font face="Arial" size="2">
<strong>Publisher& nbsp;</strong>
& nbsp;& nbsp;& nbsp;
</font>
</td>
</tr>
<tr>
<td align="left" bgColor="#FFFFD0" width="391" colspan="2">
<blockquote>
<p>
<font face="arial" size="2">Prentice Hall</font>
</p>
</blockquote>
</td>
</tr>
前述的HTML標記並不允開發人員建立搜尋程式,根據出版商的名稱進行搜尋。因此,開發人員必須建立程式來移植標籤並只傳回出版商的名稱,在這個範例中是Prentice Hall。因為不同的書籍說明網頁可能有不同的標記,所以搜尋程式必須非常具有彈性。

使用XML的優點


HTML為標準通用標籤語言(SGML)簡化指令集合的一個例子。XML則是一個比HTML更具威力的語言,因為它實作了更多SGML的功能。XML優於HTML的項目列在下面的表格中。

HTML XML
標籤描述了資料在瀏覽器中被展現4 標籤描述的是資料本身
開發人員必須使用事先定義的標籤。 開發人員可以建立標籤,因此可以描述任何型態的資料。
搜尋與更新資料的進行很困難,因為同一組標籤可以用在不同型態的資料上 搜尋與更新資料非常容易,因為每一種型態的資料都擁有一組唯一的標籤來定義它。
資料在瀏覽器中展示的方式是受到控制的 XML對資料的展示並沒有任何控制權。5

在瀏覽器中展示XML


雖然XML賦予開發人員控制資料的權力,但它並不能控制資料出現在瀏覽器的方式。要呈現資料,XML文件必須連結到樣式表。XML的原始樣式表語言是XSL。XML同時也支援CSS。

XML文件的需求


一個形成XML文件的資料物件必須符合兩項基本的要求。首先,它必須是格式正確的。第二,資料物件必須是有效的。要形成XML文件,資料物件必須實踐在XML技術中所謂的格式正確,以及符合有效性的限制。(一個無效的XML文件並不會被XML處理器視為毀滅性錯誤。)

底下的程式片段描述了XML文件的基本結構。

<? xml version="1.0" standalone="yes" ?>
<root_tag>
<element_1>
This is a sample XML Document
</element_1>
<message text="Hello World" />
</root_tag>
XML文件必須是格式正確的6


要讓資料物件成為格式正確,必須符合以下標準:

文件必須以XML宣告<?xml version="1.0"?>開始。

文件必須擁有單一根元素。

其他元素必須包含在這個根元素與其結束元素之下。

文件的元素必須是有效的巢狀組織。

要符合規則以達成格式正確,文件必須符合文件結構、XML的大小寫區別、屬性值,以及換行鍵的處置等相關規則。
所有的XML文件都必須是結構化的。意指處理器要求所有起始標籤都有相對應的結束標籤。錯誤的標籤巢狀組織以及不相對的結束標籤都會被XML處理器紀錄成毀滅性錯誤。例如,下面的標籤將會造成XML處理器引發毀滅性錯誤。7


<book_description>
<author> Ralph E. Droms
</book_descripton>
</author>


--------------------------------------------------------------------------------
注意
<cover_image url="cover.gif" />標籤是一個空白標籤。XML要求空白標籤的最後一個字元(在結尾的>符號前)必須是「/」。這個字元通知處理器標籤為空白,因此不需要結束標籤。


--------------------------------------------------------------------------------

XML是區別大小寫的。因此標籤<book_decription>與</Book_description>為不同元素的起始與結束標籤。下面的標籤將會造成XML處理器引發毀滅性錯誤。


<book_description>
<author>Ralph E. Droms</author>
</Book_descripton>
在空白標籤<cover_image url="cover.gif" />中,請注意屬性url的值為"cover.gif",被放置在引號內("")。這是XML文件的需求。如果屬性值不放在引號中,XML處理器將會引發毀滅性錯誤。

在XML文件中,標籤負責定義資料。不像HTML會將換行鍵忽略,XML會保留換行鍵。因此,下面的標籤表示不同的資料:


<book_title>Computer Networks and Internet</book_title>
<book_title>Computer Networks and
Internet</book_title>8
XML文件的有效與否


因為網站的開發人員通常在一個網站應用程式中會處理幾百個網頁,所以很容易就會疏忽網頁裡的關鍵資料。例如,在書籍說明網頁中,包含在標籤<book_title>中的資料可能會不慎遺失。XML的有效性限制就是用來檢查資料遺失與通知開發人員發生資料遺失。可以藉著在文件型態宣告(DTD)中定義網頁所需資料來達成這項功能。

於Microsoft Internet Explorer 5.0中驗證XML有效性


Internet Explorer 5.0的最後版本使用兩種屬性來控制DTD處理 :

ValidateOnParse

決定是否將驗證錯誤通報給使用者。9
ResolveExternals

決定是否載入DTD或XML結構,以及是否實踐資料型態、預設值,與其他相關事物。
在Microsoft Internet Explorer 5.0中ValidateOnParse的預設值為False。
使用者必須用scripting語言如Microsoft JScript 將該值設定為True。
XML中的邏輯結構與預設標籤


下面的部分將說明XML中的邏輯結構與預設標籤。

邏輯結構10


每一份XML文件都是由一個或多個元素所建構。這些元素被封包在起始標籤與結束標籤中,或者是空白元素標籤中。邏輯結構負責處理這些元素、元素的型態宣告,以及屬性宣告。

起始標籤、結束標籤,與空白元素標籤


在XML文件中每一個元素都是以起始標籤開始,並包含相對的結束標籤。結束標籤會以右斜線「/」開頭,並且擁有和起始標籤相同的名字及大小寫格式。放置在兩個標籤之間的文字是元素的內容。而沒有內容的元素則稱為空白元素。例如,看看下面的程式碼:

<book_description>
<cover_image url="cover.gif" />
</book_description>
標籤與其限制的說明列在下表中:

限制 說明11
唯一的屬性spec 在相同的起始標籤與空白元素標籤中沒有任何屬性名稱可以出現一次以上。下面的標籤將傳回毀滅性錯誤,因為屬性name在標籤book_name中重複出現。
<book_name name="..." author="..."_name="...">
......
</book_name>

沒有外部實體的參照 屬性值不能包含對實體直接或間接的參照,它必須在作用中文件或DTD中被宣告。因此,除非實體&mr;已經在作用中文件或其DTD中作過宣告,否則下面的標籤將會從XML處理器傳回毀滅性錯誤。
<book name="..." publisher=&mr;>
...
</book>

屬性值中沒有「<」字元12 在屬性值中任何直接或間接參照到實體的替換文字都不能包含字元「<」。唯一的例外是& lt;的替換文字。
屬性值的型態 屬性必須被宣告且其值必須符合其宣告型態。

上述表格中所列的前三個限制被定義成格式正確的限制。如果這些屬性限制沒有被遵守的話,XML處理器會傳回毀滅性錯誤。第四項限制為有效性驗證限制,除非指定,否則處理器會將之忽略。

預設標籤


雖然XML讓你使用標籤來定義資料,但還是有一些預先定義的結構。包括了註解、處理指令,以及語言識別標籤等。

註解標籤會被XML處理器忽略,如同在HTML文件中一樣。在XML中註解的宣告與在HTML文件中的宣告一樣。13


<!- This is a comment line ->
處理指令(PIs)是為應用程式提供的指令。這些指令被包含在XML的標籤中。例如,下面的標籤指出文件是以由World Wide Web Consortium所公佈的XML 1.0規格所編譯的:


<?xml version="1.0" standalone="yes"?>

--------------------------------------------------------------------------------
注意
宣告standalone="yes"表示沒有其他文件被用來驗證或修改XML文件。如果要使用DTD來驗證文件有效性,或使用樣式表來作轉換,那麼standalone的宣告應設定成standalone="no"。


--------------------------------------------------------------------------------

在XML中的語言識別是由xml:language屬性來指定。這個選擇性的屬性會接收指定資料以何種語言進行編碼的程式碼。

例如,下面的標籤可以用來指定資料片段是以英文編碼:

<p xml:language="en"> ... </p>14
有關核准的語言程式碼的完整參照來源可以在ISO 639文件<Codes for the representation of names of languages>中找到。

程式導覽:以XML製作的書籍說明文件


在下面的章節中,你將學習XML文件的基礎結構。

以HTML建立的書籍網頁


下圖說明下面XML程式碼的HTML輸出結果。




XML文件的範例15


在這裡所展示的HTML書籍說明網頁可以用XML來撰寫,如下:

<?xml version="1.0" standalone="yes" ?>
<book_description>
<book_title>Computer Networks and Internet</book_title>
<author>Douglas E. Comer</author>
<author>Ralph E. Droms</author>
<publisher>Prentice Hall</publisher>
<edition>October 1996</edition>
<price>77.25</price>
<cover_image url="cover.gif"/>
<review written_by="Publisher">
This book provides a thorough state-of-the-art overview
of networking and Internet technology and is ideal for
those with little or no background in the subject.
</review>
</book_description>
在前面的程式範例中,注意是否符合以下的要求:

文件的第一個宣告部份為處理器指令<?xml version="1.0" standlone="yes" ?>。這表示XML處理器是XML 1.0版相容,而且沒有其他附屬文件。

文件的根標籤為<book_description>,而且所有其他的標籤則是安置在這個根標籤之內。

每一個起始標籤都有一個相對的結束標籤。唯一的例外是<cover_image url="cover.gif" />。因為這是一個空白標籤,由字元「/」宣告,所以它不需要結束標籤,且是有效的。

所有的標籤內都有資料。16

所有上述的要求都符合,文件才能成為格式正確且有效的XML文件。

XML文件型態宣告(DTD)


在你建立一份XML文件之後,你可能想要確認你的文件是否有效。文件型態宣告(DTD)就是用來達成這項目標。DTD會宣告所有要放置在文件內的元素,同時還有管理元素出現的頻率與必須性,以及允許屬性值等事宜的規則。在這個部分,你將學習宣告DTD與元素的規則。

XML中的實體結構


除了本章前面所討論的邏輯結構,XML還擁有眾多的實體結構。它們包括了元素型態、屬性串列,與實體宣告。

元素型態宣告與屬性串列宣告


元素型態與屬性串列(attribute list)是在文件型態宣告(DTD)中進行宣告,並用來驗證XML文件的有效性。17
元素型態宣告於元素的內容上套用限制。屬性串列的宣告為給定的元素型態定義了一組屬性,並為這些屬性提供限制與預設值。在本章接下來的部份,你將學習更多有關元素型態與屬性串列的宣告資訊。下面的標籤提供元素型態宣告與屬性串列宣告的範例:

<!ELEMENT br EMPTY>
<!ATTLIST list
type "ordered">
實體宣告


XML文件的實體結構是由一個或多個的實體組成。這些實體可能是經過解析,或未經解析,並且可以被宣告成內部或外部的實體。

內部實體


內部實體通常都是解析過的實體。它們沒有個別值儲存物件。這些實體的內容都是在實體本身的宣告區中進行宣告,如下面的範例所示:

<!ENTITY Edition "This is a First Edition Collectors issue">18
外部實體


所有不是內部實體的實體都被視為外部實體。這些實體擁有屬性值的限制,標籤名稱必須與宣告中的名稱相符合,如下面的範例所示:

<!ENTITY cover-pic SYSTEM "../images/cover.gif">
未經解析實體


未經解析實體的內容可能是文字。如果內容的型態為文字,則內容可能是或可能不是XML。只有在為用在應用程式的實體及標籤辨別有效性時才需要使用XML處理器。而未經解析的實體則沒有任何限制。

已解析實體


已解析實體的內容稱為實體的替換文字。該文字是XML文件中不可缺少的一部份。已解析實體必須是格式正確的。所以XML文件中的邏輯與實體結構都適當地被安置。。19
<!ENTITY file1 SYSTEM "file1.xml">
每一個外部已解析過的實體可能使用不同的編碼方式來處理字元。XML處理器因而需要以UTF-8或UTH-16的編碼格式來識別實體。以另一種編碼方式儲存的已解析實體必須以內含編碼格式宣告的文字宣告開始。下面的範例為編碼方式宣告:

<?xml encoding='EUC-JP'?>
程式導覽:書籍說明文件的DTD範例


文件型態宣告可以被宣告成XML文件的一部份,或者它也可以被宣告成不同的文件,被許多XML文件引用。如果DTD被宣告成內部的,則它需遵行上述的規則。然而,宣告為外部的DTD將不會有以下的宣告:

<!DOCTYPE book [
...
]>
取而代之的,呼叫外部DTD的XML文件將會擁有下面型態的宣告:20
<? xml version="1.0" standalone="no" ?>
<!DOCTYPE book_description SYSTEM "book.dtd">
書籍說明文件範例的外部DTD


<!ELEMENT book_description (book_title,_author+,publisher, edition?,_
price, cover_image?, review*)>
<!ELEMENT book_title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT edition (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT cover_image (#PCDATA)>
<!ELEMENT review (#PCDATA)>
在上面的DTD中,注意下面的宣告:

<!ELEMENT book_description (book_title,_author+, publisher, edition?,_
price, cover?, review*)>
這個宣告表示參考到DTD的XML文件擁有一個根元素稱為book_description。該宣告同時也指出允許的子元素包括有book_title、author、publisher、edition、price、cover與review。

藉著使用下面所定義的符號,相同的標籤為子元素宣告了有效性規則。21
符號 意義
十 後面緊接這個符號的元素必須在XML文件中出現一次或多次。
? 後面緊接這個符號的元素只能在XML文件中出現零次或一次。
*22 後面緊接這個符號的元素在XML文件中能出現零次、一次或無限多次。

在前面所展示的XML DTD中,注意下面的宣告部分:

<!ELEMENT book_title (#PCDATA)>
這個宣告表示元素<book_title>並沒有包含任何子元素。它同時也表示元素中的資料可以由文字與標籤組合而成。如果資料是只由文字組成,將使用下面的宣告:

<!ELEMENT book_title (#CDATA)>
前述的DTD範例中宣告的元素沒有一個擁有子項目。因此標籤便包含PCDATA。例如,如果書籍敘述文件中,一個名為「book」的元素擁有兩個子元素,「ISBN」與「Title」,下面則為它們在DTD中被宣告的方式:

<!ELEMENT book_description (book, ...)>
<!ELEMENT book (ISBN, Title)>
<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT Title (#PCDATA)>23
下面的程式碼示範了所有本章討論過的XML:

<!DOCTYPE book[
<!ELEMENT book_description (book_title);
author+, publisher, edition?,
price, cover_image?, review*)>
<!ELEMENT book_title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>

<!ELEMENT edition (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT cover_image (#PCDATA)>
<!ELEMENT review (#PCDATA)>
]>
DTD中的屬性串列與實體宣告


XML DTD不只定義了XML文件中允許的元素,以及應用在元素上的限制,同時也藉著允許屬性串列與實體宣告來延伸了XML的威力與用途。

DTD中的屬性串列宣告


屬性串列的宣告有效地被用來加強資料取得與確保文件有效。下面的程式為書籍檢視的標籤:

<review>
By Publisher: This book provides a thorough state-of-the-art
overview of networking and Internet technology and is ideal
for those with little or no background in the subject.
</review>24
前面的標籤包含了檢視,但並不賦予任何有關作者資料上的控制權。下面的標籤可以用來存取作者資料:

<review written_by="publisher">
This book provides a thorough state-of-the-art overview
of networking and Internet technology and is ideal for those
with little or no background in the subject.
</review>
屬性名稱written_by將只在應用程式讀取其值時有用。

在屬性被含括成為有效XML文件的一部份之前,它必須先在DTD中使用屬性串列宣告來進行宣告。例如,在本節之前所宣告過的DTD,會使用下面的宣告程式:

<!ELEMENT review #PCDATA>
<!ATTLIST review written_by CDATA #REQUIRED>
上面的宣告表示元素「review」擁有一個稱為written_by的屬性,負責接受字元資料(CDATA),且不是選擇性的。

下面的表格包含一些用來宣告屬性的關鍵字列表:25
關鍵字 涵義
#REQUIRED 元素必須擁有一個屬性所指定的值。如果並未指定值,文件將不會被處理。
#FIXED 屬性擁有一個在文件中保持不變的值。
#IMPLIED26 屬性可能擁有一個宣告過的值,或者保持空白。
Default Value 該值在標籤<!ATTLIST>中的關鍵字部分被指定。如果其值在文件中被指定,預設值會被置換。然而,如果文件將屬性值保持空白,則預設值會被採用。


要編輯已存在的DTD,你必須知道屬性的四大基本型態。下表列出這些型態的說明。

屬性型態 說明
CDATA27 表示處理器預期文字為其屬性值。
ID 為屬性指定一個唯一的識別代號。ID名稱必須以字母或底線開頭,且不能包含空白字元。
NMTOKEN 指定屬性必須以字母或底線開頭,且不能包含空白字元。然而,在NMTOKEN的例子中,重複的數值是允許的。
Enumerated 這種型態並沒有關鍵字。它由一串放置在括弧內並由「I」符號分隔的所有可能數值組成,如下列範例所示:28
<!ATTLIST Binding (soft|hard) #REQUIRED>



--------------------------------------------------------------------------------
注意
想取得更多有關XML DTD的資訊,請參考World Wide Web Consortiums網站上( http://www.w3.org/ )的白皮書。


--------------------------------------------------------------------------------

DTD中的實體


4 定義實體29

XML擁有五個預先定義好的實體,詳述於下:

字元 實體宣告
& & amp;
< & lt;30
> & gt;
" & quot;
' & apos;

XML也允許其他實體在DTD中定義。例如,如果單字「Five Lakes」經常在網站中使用,它們可以被宣告成由實體「&fl」來表示。這樣的宣告如下所示:31
<!ENTITY fl "Five Lakes">
4 將資料存入檔案

資料的大型字串可以存在不同的檔案並且藉由在檔案的實體名稱與URL之間指定XML關鍵字「SYSTEM」來進行宣告,如下面範例所示:

<!ENTITY text SYSTEM "http://list.txt">
4 延伸參數實體32

如果實體宣告包含分項或選項,則該實體無法在DTD中延伸。要完成這項工作,你必須在實體名稱之前插入字元「%」來宣告實體。要延伸參數實體,百分比符號與分號必須包圍該實體。下面的範例示範這種型態在觀光卡(visiting card)中的用法:

<!ELEMENT visiting_card (%property.man;, (%property.personal;
| property.business
當你定義根元素,卡的資訊被儲存在不同的參數實體。下面的標籤被用來定義實體「property.personal」:

<!ENTITY %property.personal "(nickname | photograph |
birthdate)">
將資訊宣告成參數實體,讓元件的宣告更容易閱讀。

XML資料


XML文件是一個格式正確的資料物件,因此讓不同型態的資料可以輕易地用XML來表達。在這個部分,你將學習某些常用的資料型態如何以XML來表達。其中的一種資料型態被稱為XML資料結構(Schema)。這種資料型態可以用來定義XML文件,因此可以用來置換DTD。這一節將詳細地討論這種資料型態。33
XML中的資料呈現


傳統的資料型態可以輕易地利用XML來呈現,包括下列資料型態:

資料

中繼資料(Matadata)

數位簽名

資料庫資訊

圖形結構34

非連續性資訊(propertyOf)

結構(Schema)

延伸型態

在下面的章節中將只討論三種資料型態。

資料


XML資料在結構上可以是異質的,也就是說,由不同成分形成的。例如,書籍、紀錄與咖啡可以編碼在銷售訂單中,如下所示:

<order>
<customer>
<last_name>Doe</last_name>
<first_name>John</first_name>
</customer>
<item type="book">
<title>Computer Networks and Internet</title>
<price>77.25</price>
</item>
<item type="record">
<media>Compact Disc</media>
<album>I could have coded all day</album>
<artist>The debuggers</artistgt; <price>25.75</price> </item>
<item type="coffee">
<type>Decaff</type>
<cups>1</cups>
</item>
</order>35
中繼資料(Metadata)


XML可以表達複雜的、自我包含的資料結構。它也可以描述有關遠端網站資源的資訊,大多是資料本身。參考下面的程式:

<e-partner>
<item href="http://www.abc-press.com/welcome.htm">
<a href="http://www.abc-press.com/instock.htm">
Check e-partner for available stock
</a>
<title>Welcome to the ABC Press site</title>
</item>
</e-partner>
在這段程式中,XML文件會參照一個e-Partner的網站當作資料。

資料庫資訊


XML可以表達複雜與簡單的資料結構。例如,下面的標籤可以用來表示一連串的資料庫記錄:

<out_of_stock>
<item type="book">
<name>Programming Visual C++,</name>
<vendor>Microsoft Press</vendor>
</item>
<item type="records">
<name>Wounded Knees and Broken Elbows</name>
<vendor>The Garage CD-dump</vendor>
</item>
</out_of_stock>36
藉著Active Server Pages(ASP)技術,資料可以被轉換成XML資料結構。利用ASP建立的資料來源將維持ASP網頁的形式。然而,ASP網頁將會在伺服端輸出可存取的XML。

利用ASP網頁參照資料庫來建立XML資料來源有兩個優點。首先,當移植資料來源時script可以轉換大量的資料。第二,當你更新資料庫時資料來源會自動更新。

DTD的限制


DTD主要的缺點為它們不是以XML為基礎的。結果,要用DTD來驗證XML文件有效性時,程式人員必須學習XML,以及如何在DTD中寫出有效的規則。而且DTD並不賦予程式人員對元素可以接受的資料型態的控制權。XML資料結構(Schema)克服了這些DTD的缺點。

在本節中,你會看到一個XML資料結構的範例。你將在更進階的課程中學習更多有關資料結構的宣告。

<xml:schema ID="ArtSchema">
<elementType id="artistic-work">
<relation href="#title" />
</elementType>
<elementType id="book" extends="#artistic-work">
<relation href="author" />
</elementType>
<relationType id="author">
<pcdata />
</relationType>
瞭解結構(Schema)37


在前面的範例中,注意下列事項:

<elementType id="book" extends="artistic-work">宣告表示書籍是藝術工業的一個子集。

<relation href="author">宣告代表元素書籍擁有一個子元素,名為「author」,接受PCDATA作為輸入。

相關導讀


要作更進一步的研究,你可以參考下列網址:

http://msdn.microsoft.com/xml/default.asp

http://www.xml.com/pub38

http://xmlephant.com/

http://www.oasis-open.org/

http://vbxml.com/

http://xmlinfo.com/

實作6:以XML來建立與驗證書籍敘述文件


目標


在完成本實作之後,你將能夠:39
為書籍說明網頁中的資料建立一份XML文件。

撰寫文件型態宣告(DTD)來驗證你所建立的XML文件。

連結XML文件與DTD。

在您開始之前


先決條件


在開始實作之前,你必須擁有:

HTML的知識。40

熟悉Microsoft Internet Explorer 5.0以上的版本。

情境


Ramona Publishing網站將從HTML轉換成XML。你將從網站上取得一個書籍說明網頁。首先,你將收集網頁上的資料,並將之轉換為XML文件。接著,你將建構DTD來驗證XML文件。最後,你將連結DTD與XML文件。


--------------------------------------------------------------------------------
注意
在這個實作中,使用→當作連接符號用。


--------------------------------------------------------------------------------

4 預估完成時間:15分鐘

練習1:建立XML文件41


在這個練習中,你將開啟以HTML建立的書籍說明網頁並將內含的資料複製到XML文件。

4 開啟HTLM書籍敘述網頁

在Microsoft Windows NT Explorer中,檢視Labs\Lab06\StartCode目錄,然後點選 book.htm 。

442 開啟XML文件

在 開始 功能表中,指向 程式集 ,選擇 附屬應用程式43 ,然後點選 記事本 。
開啟目錄Labs\Lab06\StartCode下的 book.xml 。
444 完成XML文件

在book.htm中,為定義在book.xml中的標籤尋找適當數值。
複製每一個數值並將之貼到book.xml適當的標籤中。
加入適當的結束標籤到XML文件中。
將book.xml儲存在目錄Labs\Lab06下。
4 觀察結果45

在Windows NT Explorer中,在目錄Labs\Lab06目錄中開啟 book.xml 。XML文件會出現在瀏覽器中。

練習2:建立XML DTD


在這個練習中,你將為你在之前的練習中建立的XML文件建立一份DTD。

4 建立DTD46

在記事本中建立一個新檔案,並將下面的宣告加入檔案中:

<!ELEMENT book_description (Book_Title, Author+,→
Edition?, Price, Cover_image?, About_the_Book*)>
<!ELEMENT Author (#PCDATA)>
<!ELEMENT Edition (#PCDATA)>
<!ELEMENT Price (#PCDATA)>
<!ELEMENT Cover_image (#PCDATA)>
<!ELEMENT About_the_Book (#PCDATA)>
於Labs\Lab06目錄中將檔案存成 book.dtd 。
練習3:連結XML文件與DTD


在這個練習中,你將所建立的XML文件連結到前面所建立的DTD。47
4 開啟XML文件。

在記事本中,開啟目錄Labs\Lab06中的 book.xml 檔案。

4 將文件連結至DTD48

在文件中,找出下面的標籤:

<?xml version="1.0" ?>
於上面程式的下一行,加入下面的程式碼:

<!DOCTYPE book_description SYSTEM "book.dtd">
儲存並關閉檔案。
4 檢視結果49

在Internet Explorer中,開啟 Labs\Lab06\book.xml 。

XML文件會以收縮的樹狀結構出現在瀏覽器中。
mic64 目前離線  
送花文章: 0, 收花文章: 21 篇, 收花: 61 次