| 發(fā)布者:[不詳] 來(lái)源:[不詳] | | 在本章中,你將學(xué)習建立格式正確的XML 文件的基本技術(shù)。格式正確的文件指的是一份符合最小標準集合的文件。該標準遵守了XML 文件的規格。當你建立格式正確的XML 文件時(shí),你可以向右延伸并開(kāi)始在需要元素時(shí)加入元素,并輸入文件的數據,就像你在建立HTML 網(wǎng)頁(yè)時(shí)所做的一樣。(雖然,如同你在前面章節中所學(xué)的,在XML 文件中你是創(chuàng )造自己的元素,而不是使用預先定義好的元素。)然后,你在使用Microsoft Internet Explorer 5 處理與顯示任何格式正確的文件時(shí)將不會(huì )有任何問(wèn)題。 在第五章中,你將學(xué)習如何建立一份有效的XML 文件:它不只是一個(gè)格式正確的文件,同時(shí)需符合一組更嚴格的限制。建立一個(gè)有效的XML 文件并不像建立格式正確的文件那樣簡(jiǎn)單。在你開(kāi)始為有效的文件加入元素與數據之前,你必須在文件型態(tài)宣告部份中完整定義文件的結構,而該文件型態(tài)宣告會(huì )被加入文件序文中。在第五章中,你將會(huì )學(xué)到一些制作有效文件的優(yōu)點(diǎn),特別是當你或其它人正在建構一組類(lèi)似的文件時(shí)。 在本章中,首先你將學(xué)習所有格式正確的XML 文件的必要性與選擇性部份。接下來(lái)你將探索如何借著(zhù)定義文件的元素來(lái)將信息加到XML 文件之中。然后你將學(xué)習為元素加入屬性以提供額外的文件信息。
格式正確的XML 文件的各個(gè)部份
如同你在第二章所學(xué)到的,XML 文件由兩個(gè)部份組成:序文與文件元素(一般稱(chēng)為根元素)。另外,緊鄰文件元素之后,XML 文件還包括了批注、處理指令,以及空白部份。下面是一個(gè)格式正確的XML 文件范例,它顯示了文件的各個(gè)部份以及在每個(gè)部份中你可以加入的項目: 列表3-1 示范了這個(gè)范例文件的完整版本。(你可以在隨書(shū)光盤(pán)的 Parts.xml 檔案中找到這個(gè)程序代碼。) Parts.xml <?xml version=‘1.0‘ standalone=‘yes‘ ?> <!--File Name:Parts.xml ─ ─> <?xml-stylesheet type="text/css" href="Inventory01.css"?> <INVENTORY> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>mass market paperback</BINDING> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK> <BOOK> <TITLE>The Legend of Sleepy Hollow</TITLE> <AUTHOR>Washington Irving</AUTHOR> <BINDING>mass market paperback</BINDING> <PAGES>98</PAGES> <PRICE>$2.95</PRICE> </BOOK> <BOOK> <TITLE>The Marble Faun</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</BINDING> <PAGES>473</PAGES> <PRICE>$10.95</PRICE> </BOOK> <BOOK> <TITLE>Moby-Dick</TITLE> <AUTHOR>Herman Melville</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>724</PAGES> <PRICE>$9.95</PRICE> </BOOK> <BOOK> <TITLE>The Portrait of a Lady</TITLE> <AUTHOR>Henry James</AUTHOR> <BINDING>mass market paperback</BINDING> <PAGES>256</PAGES> <PRICE>$4.95</PRICE> </BOOK> <BOOK> <TITLE>The Scarlet Letter</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</BINDING> <PAGES>253</PAGES> <PRICE>$4.25</PRICE> </BOOK> <BOOK> <TITLE>The Turn of the Screw</TITLE> <AUTHOR>Henry James</AUTHOR> <BINDING>trade paperback</BINDING> <PAGES>384</PAGES> <PRICE>$3.35</PRICE> </BOOK> </INVENTORY> <!--Comments,processing instructions,and white space can also appear after the document element.--> <?MyApp Parm1="value 1" Parm2="value 2"??> 在文件序文起始部份的XML 宣告版本號碼可以用單引號「‘」或雙引號「"」來(lái)包圍指定。通常,XML 卷標中引號內的字符串-稱(chēng)為literal-可以使用單引號或雙引號來(lái)包圍。因此,下面的程序都是合法的: <?xml version=‘1.0‘?> <?xml version="1.0"?> 在列表3-1 范例文件中的XML 宣告也包含了一個(gè)獨立文件宣告(standalone documentdeclaration)(standalone=‘yes‘)。這個(gè)宣告可以用在某些XML 文件中來(lái)簡(jiǎn)化文件的處理。(第六章中將討論獨立文件宣告) 在這個(gè)范例文件的序文與文件元素的部份都包括了批注。(你將在第四章中學(xué)到更多有關(guān)批注的知識。) 文件的序文包含了兩行空白,標簽為「空白部份」,而文件元素之后也包括了兩行空白??瞻撞糠萦梢粋€(gè)或多個(gè)的空格符、Tab、換行,或底線(xiàn)字符所組成。為了讓XML 文件具有更高的可讀性,你可以自由地在XML 卷標之間-例如起始卷標、結束卷標、批注,與處理指令-加入空白部份,也可以在標簽之中加入空白-例如,范例文件中XML 宣告的結尾部份中的「yes」與「?」之間的空格符。除非空格符是包含在直接包含字符數據的元素之中,否則處理器會(huì )簡(jiǎn)單地將之忽略。(在這個(gè)例子中,處理器會(huì )將空白部份當成元素的字符數據傳送給應用程序。) 范例文件在序文中有一個(gè)處理指令,并在緊鄰文件元素處也有一個(gè)處理指令。(第四章將討論處理指令。) 最后,文件包含了XML 文件的必要條件:文件元素。建立文件元素與其包含的巢狀元素是本章的討論重點(diǎn)。 注意 如同你將在第五章中學(xué)到的,有效的XML 文件需要包含一個(gè)附加的組件,這個(gè)組件并未包括在列表3-1 的范例中:這個(gè)組件就是文件型態(tài)宣告,可以放置在序文中的任何位置,其它卷標之外,跟在XML 宣告之后。文件型態(tài)宣告定義了完整XML 文件的結構。
XML 文件的最低要求
列表3-1 的XML 文件范例的序文部份包含了所有可以放置在序文中的項目。然而,請注意,這些項目都是選擇性的(雖然XML 規格書(shū)中指明了你「應該」包含XML 宣告),可有可無(wú)。因此,序文本身也是選擇性的,而后基本要求的XML 文件,只包含了一個(gè)簡(jiǎn)單的文件元素,符合格式正確的XML 文件標準: <minimal>A minimalist document.</minimal> 該文件在Internet Explorer 5 中將顯示如下: 加入元素到文件中
XML 文件中的元素包含了真正的文件信息(例如,在列表3-1 中,有存貨清單中書(shū)籍的標題、作者、價(jià)格,與其它信息),而且指出了這些信息的邏輯結構。 元素會(huì )以樹(shù)狀結構的方式被安排,元素可以巢狀套迭在其它的元素之中。文件必須明確地擁有一個(gè)頂層元素-文件元素或根元素-而其它的元素都套迭在這個(gè)元素之下。因此,下面是一個(gè)格式正確的XML 文件。 <?xml version="1.0" ?> <!--A well-formed XML document.--> <INVENTORY> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>mass market paperback</BINDING> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK> </INVENTORY> 然而,下面的文件則不是格式正確的: <?xml version="1.0"?> <!--This document is NOT well-formed.--> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>mass market paperback</BINDING> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK> 元素必須適當地套迭。這代表,如果元素(由一組起始卷標與結束卷標來(lái)界定,作者稍后將會(huì )介紹。)是在另一個(gè)元素之中開(kāi)始,它必須也在相同的元素之中結束。例如,這些元素都是格式正確的: <BOOK> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> </BOOK> 然而,這些元素就不是格式正確的: <!--NOT well-formed:--> <BOOK><TITLE>Leaves of Grass</BOOK></TITLE> 注意 一個(gè)包含一個(gè)或多個(gè)套迭元素(如列表3-1 中的BOOK)的元素稱(chēng)為父元素(parent element)。而一個(gè)直接包含在父元素之下(如BOOK 之下的TITLE)的元素則稱(chēng)為子元素(child element)、副元素(subelement),或父元素的套迭元素。
元素解析
如你所見(jiàn),元素通常由起始卷標、內容與結束卷標所組成。 不像HTML,XML 要求你一定要包含起始卷標與結束卷標。(唯一的例外是沒(méi)有內容的元素,你可以使用稍后介紹的特殊空元素。) 出現在起始卷標與結束卷標開(kāi)頭部份的名稱(chēng)(在上面的例子是TITLE),稱(chēng)為元素的型態(tài)(type)或通用識別代號(generic identifier:GI)。型態(tài)名稱(chēng)可以用來(lái)識別特殊的元素型態(tài)或元素類(lèi)別,而不是特定一個(gè)元素。因此,元素可以包含多個(gè)擁有相同型態(tài)名稱(chēng)的元素(如列表3-1 中的BOOK 或TITLE 元素)。 當你為XML 文件加入元素時(shí),你可以選擇任何你想要的型態(tài)名稱(chēng),只要遵守下面的規則即可: 名字必須以字母或底線(xiàn)開(kāi)頭(_),后面接著(zhù)零或多個(gè)字母、數字、句號(.)、連字號(-),或底線(xiàn)(_)。 XML 規格書(shū)中說(shuō)明了元素的型態(tài)名稱(chēng)是以「xml」(以任何大寫(xiě)或小寫(xiě)字母組成)為前綴,而且將被保留成為標準規格。雖然Internet Explorer 5 并不強迫要求遵守這項限制,但最好不要使用這個(gè)前綴以避免將來(lái)產(chǎn)生問(wèn)題。 下列是合法的元素型態(tài)名稱(chēng): Part _1stPlace A B-SECTION Street.Address.1 下列則是不合法的元素型態(tài)名稱(chēng): 1stPlace <!──Digit not allowed as first character ──> B Section <!──Space not allowed within a name ──> B/Section <!──Slash not allowed within a name ──> :Chapter <!──Colon not allowed as first character in IE5 ──> A:Section <!──In IE5,allowed only if you ‘ve declared A as a namespace ──> 注意 根據XML 規格書(shū)中的定義,元素名稱(chēng)中的冒號(:)將被保留作為命名空間(namespace)用。命名空間負責區別擁有相同名稱(chēng)的元素,筆者將在第七章的 <將HTML 元素加到XML 文件中并使用命名空間> 中繼續討論。只有當元素名稱(chēng)接在已經(jīng)宣告過(guò)的命名空間之后,InternetExplorer 5 才會(huì )讓你在元素名稱(chēng)中加入冒號。例如,A:Section 只有在你已將A 宣告成命名空間時(shí)才為合法。 同時(shí),起始標簽中的名字必須完全與結束標簽中的名字相同,包括字母的大小寫(xiě)。因此,底下的元素就不是格式正確的: <Title>Chapter One</title><!──NOT well-formed.──> 元素名字中的大小寫(xiě)相當重要,如同所有卷標中的文字規定一樣,有大小寫(xiě)之分。因此,元素型態(tài)名稱(chēng)Ace 與ace 或ACE 并不相同。
元素內容的類(lèi)型
元素內容指的是起始卷標與結束卷標之間的文字。你可以在文件的內容包括下列型態(tài)的項目: 套迭的元素 。在列表3-1,元素INVENTORY 與BOOK 都包含了套迭元素當作元素的內容:
字符數據 。字符數據是表達元素內容信息的文字,例如TITLE 元素中特定的書(shū)籍標題。
下面介紹的是一個(gè)由字符數據與套迭的元素所組成的元素內容:
當加入字符數據到元素中時(shí),你可以加入除了左括號(<),與連接符號(&)或字符串(] ] >)之外的字符。 注意 XML 解析器會(huì )掃瞄XML 卷標中元素的字符數據。你不可以加入左角括號(<)、連接符號(&),或字符串(] ] >)當作字符數據的一部份,因為解析器會(huì )將(<)當作套迭元素的起始,將(&)當作實(shí)體或字符參照的起始,以及將(] ] >)當作CDATA 區段的結束。(筆者將在第六章討論字符參照;在第四章討論CDATA 區段)。如果你想要加入(<)或(&)來(lái)當作字符數據的一部份,你可以使用CDATA 區段。你也可以使用字符參照來(lái)加入任何字符(包括不在鍵盤(pán)上的字符),而且可以借著(zhù)使用預先定義的普通實(shí)體參照來(lái)加入某些字符(如<或&)。 普通的實(shí)體參照與字符參照 。下面是一個(gè)包含普通實(shí)體參照與字符參照的元素范例:
CDATA 區段 。CDATA 區段是一個(gè)你可以自由加入除了]] >字符串之外任何字符的文字區塊。下面是一個(gè)元素中CDATA 區段的范例:
處理指令 。處理指令提供信息給XML 應用程序使用。(請參閱 第四章 ) 批注 。批注是XML 文件的注釋部分,其文字是可以閱讀了解的,但XML 處理器會(huì )將之忽略。(請參閱 第四章 ) 下面是一個(gè)包含處理指令與批注的元素范例:
空元素
你也可以加入空元素(empty element;即沒(méi)有內容的元素)到你的文件中。你可以借著(zhù)在起始卷標后立即放置結束卷標來(lái)建立一個(gè)空元素,如同這個(gè)范例所示: <HR></HR> 或者,你可以借著(zhù)使用特殊的空元素卷標(empty-element tag)來(lái)省去輸入,如下所示: <HR/> 這兩個(gè)標簽擁有相同的意義。 因為空元素沒(méi)有內容,你可能會(huì )質(zhì)疑其用途為何。 下面介紹的是兩種可能的用途: 你可以使用空元素告訴XML 應用程序來(lái)執行某個(gè)動(dòng)作或顯示對象。在HTML 中的例子BR 是空元素,它能告訴瀏覽器加入一個(gè)換行,而HR 空元素,則是告訴瀏覽器加入一個(gè)水平分界線(xiàn)。換言之,僅擁有元素外觀(guān)與特定名稱(chēng)的元素-未含任何內容-還是可以提供許多重要的信息給應用程序。 空元素可以透過(guò)屬性來(lái)儲存信息,你將在本章后面學(xué)到屬性的知識。(你尚未見(jiàn)到擁有屬性的元素。)在HTML 中的例子是IMG(影像)空元素,它包含了告訴處理器那里可以找到圖形文件,以及如何顯示圖形等信息的屬性。 提示 如同你將在第七章學(xué)到的,串接樣式表(CSS)可以使用空元素來(lái)顯示影像。在第八章,你將學(xué)習如何運用數據鏈路來(lái)使用空元素或非空元素的屬性。而在第九章與第十章中,你將學(xué)習如何使用HTML script(第九章)與XSL 樣式表(第十章)來(lái)使用元素(空或非空元素)及元素的相關(guān)屬性并執行適當的動(dòng)作。
建立不同型態(tài)的元素
1. 在文字編輯器中 開(kāi)啟 一個(gè)新的、空白文字文件,并輸入顯示于列表3-2 中的XML文件(您可以在隨書(shū)光盤(pán)的 Inventory03.xml 檔案中找到)。你也可以使用你在第二章中所建立的 Inventory.xml 文件(在列表2-1 與隨書(shū)光盤(pán)中都有提供)來(lái)當作出發(fā)點(diǎn)。 2. 使用文字編輯器的 存盤(pán) 指令,將文件儲存到本機硬盤(pán),并指定文件名為 Inventory03.xml 。 Inventory03.xml <?xml version="1.0"?> <!--File Name:Inventory03.xml --> <?xml-stylesheet type="text/css" href="Inventory02.css"?> <INVENTORY><!--Inventory of selected 19th Century American Literature --> <BOOK> <COVER_IMAGE Source="Huck.gif"/> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>mass market paperback</BINDING> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK> <COVER_IMAGE Source="Leaves.gif" /> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK> <BOOK> <COVER_IMAGE Source="Faun.gif" /> <TITLE>The Marble Faun</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</BINDING> <PAGES>473</PAGES> <PRICE>$10.95</PRICE> </BOOK> <BOOK> <COVER_IMAGE Source="Moby.gif" /> <TITLE> Moby-Dick <SUBTITLE>Or,the Whale</SUBTITLE> </TITLE> <AUTHOR>Herman Melville</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>724</PAGES> <PRICE>$9.95</PRICE> </BOOK> </INVENTORY> 注意 你所輸入的文件使用了一個(gè)名為 Inventory02.css 的CSS,這是你在之前的練習中所建立的(在本書(shū)的列表2-4)。確定這個(gè)樣式表檔案是放在與 Inventory03.xml 相同的目錄中。 3. 在Windows 檔案總管或目錄窗口中,利用鼠標雙擊你剛儲存的 Inventory03.xml 檔案: Internet Explorer 5 的顯示如下圖所示: 你輸入的文件包含了下列型態(tài)的元素與元素內容: 元素中包含批注作為內容的一部份(INVENTORY)。注意瀏覽器并不會(huì )將批注顯示出來(lái)。 在每一個(gè)BOOK元素的開(kāi)頭部份有一個(gè)名為 COVER_IMAGE 的空元素。這個(gè)元素的目的是告訴XML 應用程序顯示書(shū)籍封面上的特定影像。(Source 屬性包含了影像檔案的名稱(chēng))然而,在這個(gè)范例中要能使用這樣的一個(gè)空元素,你需要透過(guò)HTML 網(wǎng)頁(yè)中的script 或XSL 樣式表(將于第九章與第十章中討論)來(lái)顯示XML 文件,而不是使用簡(jiǎn)單的CSS。 一個(gè)包含字符數據與子元素(SUBTITLE)的元素(在Moby-Dick 例子中是TITLE)。注意瀏覽器會(huì )將字符數據與子元素顯示在同一行上,并使用相同的格式(指定到TITLE 元素的CSS 格式是由SUBTITLE 元素所繼承而來(lái)的)。
為元素加入屬性
在元素的起始卷標中,或是在空白標簽中,你可以含括一個(gè)或多個(gè)屬性規格(attributespecifications)。屬性規格是一個(gè)與元素結合的名稱(chēng)-數值對(name-value pair)。例如,下面的PRICE 元素包含了一個(gè)名為T(mén)ype 的屬性,其值被指定為retail: <PRICE Type="retail">$10.95</PRICE> 對其他的書(shū)籍而言,這項屬性可能設定成其它值,例如設定成wholesale。 下面的BOOK 元素包含了兩個(gè)屬性,Category 與Display: <BOOK Category="fiction" Display="emphasize"> <TITLE>The Marble Faun</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</BINDING> <PAGES>473</PAGES> <PRICE>$10.95</PRICE> </BOOK> 下面的空元素則包含了名為Source 的屬性,指出包含要被顯示影像的文件名稱(chēng): <COVER_IMAGE Source="Faun.gif" /> 加入屬性提供了另一種方法來(lái)為元素加入信息。一般來(lái)說(shuō),你可以放置大量你想要顯示的元素數據于元素的內容中。而且,你可以使用屬性來(lái)儲存元素不同的特性,并不必然是那些要顯示的資料。如同目錄,或者是顯示指令。然而,在XML 的規格書(shū)中,對于應該被儲存在屬性或內容的信息型態(tài)作了嚴格的區別。 注意 當你使用CSS 來(lái)顯示XML 文件(使用方法將在第七章討論),瀏覽器并不會(huì )顯示屬性或屬性值。然而使用數據鏈路(第八章)、HTML 網(wǎng)頁(yè)中的script(第九章),或XSL 樣式表(第十章)來(lái)顯示XML 文件,可讓你存取屬性與屬性值,或者執行適當的動(dòng)作。
建立屬性的規則
如同你所看到的,屬性規格是由屬性名稱(chēng)后面接著(zhù)等號,再接著(zhù)屬性值所構成的。你可以選擇你想要的任何名稱(chēng),只要遵循下面規則即可: 名稱(chēng)必須由字母或底線(xiàn)所組成(_),后面接著(zhù)零或多個(gè)字母、數字、句點(diǎn)(.)、連字號(-),或底線(xiàn)(_)。 XML 規格書(shū)中陳述了屬性的名稱(chēng)以「xml」(任何大寫(xiě)或小寫(xiě)字母的組合)作為起始,該前綴被「保留作為標準規格」。雖然Internet Explorer 5 并未執行這項限制,但最好還是不要使用該前綴以避免將來(lái)的沖突。 特定的屬性名稱(chēng)只能出現在起始卷標或空白卷標中一次。 例如,下面起始卷標中的屬性名稱(chēng)是合法的: <ANIMATION FileName="Waldo.ani"> <LIST _1stPlace="Sam"> <ENTRY Zip.Code="94941"> 下面的屬性名稱(chēng)則是違法的: <!──Duplicated attribute name in same tag:──> <ANIMATION FileName="Waldo1.ani" FileName="Waldo2.ani"> <LIST 1stPlace="Sam"><!──Digit not allowed as first character ──> <ITEM A:Category="cookware"><!──In IE5,allowed only if you ‘ve declared A as a namespace ──> 注意 根據XML 規格,在屬性的名稱(chēng)中冒號的使用被保留供指定命名空間用。命名空間被用來(lái)區分擁有相同名字的屬性;命名空間將在第七章中的 <將HTML 元素加到XML 文件中并使用命名空間> 作討論。只有當元素名稱(chēng)接在已經(jīng)于文件中宣告過(guò)的命名空間之后,Internet Explorer 5 才會(huì )讓你在元素名稱(chēng)中加入冒號。例如,只有當你已經(jīng)將A 宣告成命名空間時(shí),A:Category 才是合法的。
合法屬性值的規則
你指定到屬性的值是包含在引號內的一連串字符,稱(chēng)為引號字符串(quoted string),或literal。你可以指定任何的literal 值到屬性中,只要遵守下面的規則即可: 字符串可以使用單引號(‘)或雙引號(")來(lái)包圍。 字符串中不能包含用來(lái)包圍字符串的引號。 字符串可以包含字符參照或普通內部實(shí)體參照。(第六章中將討論字符參照與實(shí)體參照) 字符串不能包含(<)字符。(解析器會(huì )把該字符與XML 卷標的起始符號混淆) 字符串不能包含(&)字符,除了作為字符參照或實(shí)體參照的起始外。 你已經(jīng)看過(guò)合法屬性規格的范例。下面的屬性規格則是違法的: <EMPLOYEE Status=""downsized""><!--Can ‘t use delimiting quotewithin string.--> <ALBUM Type="<CD>"><!--Can ‘t use <within string.--> <WEATHER Forecast="Cold &Windy"><!--Can ‘t use &except tostart a reference.--> 如果你想要在屬性值中包含雙引號("),你可以使用單引號(‘)來(lái)包圍界定字符串,如下面范例所示: <EMPLOYEE Status=‘"downsized"‘><!--Legal attribute value.--> 同樣地,要將單引號(‘)包含在字符串中,就使用雙引號(")來(lái)將字符串包圍: <CANDIDATE name="W.T.‘Bill ‘ Bagley""><!--Legal attribute value.--> 提示 你可以借著(zhù)使用字符參照來(lái)避開(kāi)這種字符限制并輸入任何字符到屬性中,或是使用-如果可以的話(huà)-預先定義的普通實(shí)體參照。筆者將在第六章中解釋字符參照與預先定義的普通實(shí)體參照。 如果你建立一個(gè)不包含文件型態(tài)宣告的格式正確的文件(如你在本章中所作的),你可以賦予屬性符合上述規則的任何值。然而,如同你將在第五章中學(xué)到的,當你建立文件型態(tài)宣告并將屬性定義于該宣告內,你可以限制那些可以被指定到屬性的值的型態(tài)。例如,你可以將屬性定義成其值只能接受「yes」或「no」。因此,將某些型態(tài)的信息儲存到元素的屬性中而非內容中的好處,就是你可以獲得更多可以被指定到屬性上的數據型態(tài)上的控制權,并讓解析器實(shí)行這些型態(tài)的限制(如同你將在第五章中看到的,基本的XML 規格并不提供方法來(lái)限制元素中字符數據的型態(tài))。
將內容轉換成屬性
1. 在文字編輯器中 開(kāi)啟 一份新的、空白的文本文件,并輸入列表3-3 中顯示的XML文件。(你可以在隨書(shū)光盤(pán)的 Inventory04.xml 檔案中找到)你也可以使用你之前輸入過(guò)的 Inventory.xml 文件(在列表2-1 與隨書(shū)光盤(pán)都有提供)作為起始點(diǎn)。 2. 使用文字編輯器的 另存新文件 指令將文件儲存于本機硬盤(pán)上,文件名為 Inventory04.xml 。 Inventory04.xml <?xml version="1.0"?> <!--File Name:Inventory04.xml --> <?xml-stylesheet type="text/css" href="Inventory02.css"?> <INVENTORY> <BOOK Binding="mass market paperback"> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR Born="1835">Mark Twain</AUTHOR> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK Binding="hardcover"> <TITLE>Leaves of Grass</TITLE> <AUTHOR Born="1819">Walt Whitman</AUTHOR> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK> <BOOK Binding="trade paperback"> <TITLE>The Marble Faun</TITLE> <AUTHOR Born="1804">Nathaniel Hawthorne</AUTHOR> <PAGES>473</PAGES> <PRICE>$10.95</PRICE> </BOOK> <BOOK Binding="hardcover"> <TITLE>Moby-Dick</TITLE> <AUTHOR Born="1819">Herman Melville</AUTHOR> <PAGES>724</PAGES> <PRICE>$9.95</PRICE> </BOOK> </INVENTORY> 注意 你輸入的文件使用了你在前面練習中所建立、名為的 Inventory02.css 的CSS(可以于列表2-4 與隨書(shū)光盤(pán)中找到)。請確定這個(gè)樣式表檔案是與Inventory04.xml 位在相同的目錄中。 3. 在Windows 檔案總管或目錄窗口中,雙擊你剛儲存的 Inventory04.xml 檔案:Internet Explorer 5 的顯示如下圖所示: 你輸入的文件是以 Inventory.xml 為基礎,該檔案是你在之前的練習中建立的。除了擁有比 Inventory.xml 較少的元素外,新文件擁有兩項修正,藉以說(shuō)明屬性的使用: 在每一個(gè)BOOK 元素中,書(shū)籍的連結信息都從內容(以BINDING 套迭元素的型式)被轉換成名為Binding 的屬性。例如,你可能會(huì )制作這種轉換,因為你想儲存連結的型態(tài),但是當使用CSS 來(lái)顯示該文件時(shí),你卻不想將之與其它的書(shū)籍信息顯示出來(lái)。(在上圖中,請注意Internet Explorer5 并未顯示屬性的值) 一個(gè)名為Born 的屬性被加到每一個(gè)AUTHOR 元素中,以?xún)Υ孀髡叩某錾掌?。這是一個(gè)你可能想要儲存,但卻不想顯示的較不重要信息的范例。將這類(lèi)信息隱藏并指出該信息是較不重要的的方法之一,就是將它指定到屬性中,而不是放在元素的內容中。 這些只是屬性眾多用途的極少部分。你將在第五章中看到更多的用法。 | |
| | 文章相關(guān)關(guān)鍵詞:xml格式,xml格式文件 查看器,xml文件格式,什么是xml格式,xml 格式不同,vb xml 格式,論文的正確格式,正確的郵箱格式,正確的電子郵箱格式 |
|