在Intel的早期,Andy Grove遇到一個員工- 他建議公司在晶片的基礎上開發個人電腦。 Andy
Grove疑問「個人電腦能做什麼呢?”,這個員工舉例說,它可以儲存處方。 Grove考慮到整個研究、開發和市場費用要數百萬美圓,最後決定以為紅綠燈提供晶片作為開始。
每個人都是事後諸葛亮。 Andy Grove,不管你怎麼看他,被普遍認為是一個非常聰明的人- 能夠做出發展公司的重大決定。但是在七十年代,不可能強求他預見個人電腦的潛力。如果他當時見過Excel、Quark、Photoshop、Oracle或網絡,他就會理解把強大的處理器放在桌面上會允許軟體做任何事。
但是如果沒親眼見過,誰能想到呢。在用打字機、加法機和鉛筆作為計算的工具的時代,你能解釋PC和它的用途嗎?
這個例子可以用在解釋擴充標記語言(XML - eXtensible Markup
Language)上。現在還沒有和它相似的東西,所以很難做出比較。你可能聽過XML是HTML的替代品或XML與HTML相似,可以定義自己的標記符。這兩種說法都不全對,就像說PC是儲存處方的機器一樣。
我媽媽是個訓練有素的廚師,如果我用她的配方,我的家庭會省下很大一筆錢。
我以簡單的開始。因此我打開文字編輯器,開始寫一些HTML
程式碼:
<HTML>
<H1 ALIGN=CENTER>Recipe</H1>
<FONT FACE size=2>Chocolate Chip Bars</FONT>
寫完上面幾行後,我想接著寫我媽媽的精妙菜譜。那怎麼做呢?一份老式的Web頁面。接下來呢?把我的頁面的URL送給對這個食譜感興趣的人們,然後讓他們剝掉其中的<P>和<FONT
FACE size=2>嗎?這得花點時間,我想得到實際的內容。
看看下面可能的 XML標記:
<author>Carol Schmidt</author>
<recipe_name>Chocolate Chip Bars</recipe_name>
在XML中,標記符可以最好地描述內容。以這種方式,我可以肯定任何查找出現在<recipe_name>標記符中的“Chocolate Chip”
的人都可以拿到媽媽_的食譜。進一步說,如果我的信息被像這樣的標記符(有意義的標記符)包圍- 我可以告訴其它程序如何使用它們。我也可以透過編碼把<recipe_name>標記符中的內容放入資料庫的某個域中,然後把它輸出到一本書的硬拷貝中。
還有,我可以用一個支援XML的字處理器讓網頁的出版變得輕而易舉。
這就是XML的本質:讓標記對人和機器都可讀。但是在實現這個目標之前,應該先理解用XML編碼所涉及的東西。
文件要組織良好一個XML文件必須滿足兩點:組織良好和有效。我們以一個組織良好的文檔開始。
我發明了一些描述食譜的標記符,並把它們組織成一種合理和可讀的方式。它可能不是最好的標記,但是在下面的例子中工作得很好。
<?xml version="1.0"?>
<list>
<recipe>
<author>Carol Schmidt</author>
<recipe_name>Chocolate Chip Bars</recipe_name>
<meal>Dinner
<course>Dessert</course>
</meal>
<ingredients>
<item>2/3 C butter</item>
<item>2 C brown sugar</item>
<item>1 tsp vanilla</item>
<item>1 3/4 C unsifted all-purpose flour</item>
<item>1 1/2 tsp baking powder</item>
<item>1/2 tsp salt</item>
<item>3 eggs</item>
<item>1/2 C chopped nuts</item>
<item>2 cups (12-oz pkg.) semi-sweet choc. chips</item>
</ingredients>
<directions>
Preheat oven 至 350 degrees. Melt butter;
combine with brown sugar and vanilla in large mixing bowl.
Set aside to cool. Combine flour, baking powder, and salt;
set aside.Add eggs to cooled sugar mixture; beat well.
Stir in reserved dryingredients, nuts, and chips.
Spread in greased 13-by-9-inch pan.
Bake for 25 to 30 minutes until goldenbrown;
cool. Cut into squares.
</directions>
</recipe>
</list>
這就是一份可以接受的XML文件- 告訴你XML是什麼:把資料以一種有實際意義的方式進行組織。
雖然這些標記符看起來有點象HTML,但有很大的區別:檔案中沒有指出資料如何表示的資訊。版面指令,當我們準備好時,
就會從其它地方出現。這和把地址簿的資訊放在資料庫的欄位和記錄中而不是放在字處理器產生的清單中的道理一樣。資料庫可以讓你把通訊錄中的資訊合成到標籤、信封、信件或其它任何想要的載體上面。最後,就是把這份食譜文件合成到一種表現語言中,如HTML或CSS。
前面說過,XML文件必須組織良好。這表示文件必須符合以下三項基本規則:
文件以XML定義<?xml version="1.0"?>開始。
有一個包含所有其它內容的根元素,如上面例子中的<list>
和</list>標記符。
所有元素必須合理地嵌套,不允許交叉嵌套。
在上面的例子中,幾個<item>元素被合理地嵌套<ingredients>和
</ingredients>標記符中。但下面的標記卻有嚴重的問題:
<ingredients><item></ingredients>chocolate chips</item>
於是"chocolate chips"沒有被包含在ingredients清單中。因此這份文檔就沒有組織好。這在HTML中可能不算什麼,因為瀏覽器已經被設計成可以處理這種問題。
但是在XML中卻是致命的- 應用程式將拒絕處理沒有組織好的文件。
我們現在知道組織良好非常重要,但不只這些