什麼是XML(轉貼)

2021-03-31 11:06:34 字數 3218 閱讀 1380

什麼是xml????

正象html一樣,可擴充套件置標語言xml(extensible markup language)也是一種置標語言。它同樣依賴於描述一定規則的標籤和能夠讀懂這些標籤的應用處理工具來發揮它的強大功能。這一點,從xml的命名上也可窺見一斑。

——extensible markup language (xml) 1.0 specs, the annotated version. 」

從對xml的最初命名可以看出,xml的核心歸根結底還是置標。不過,xml這個置標語言可比html的功能要強大的多了。

「人」如其名,xml的強大功能來自於「x」。也就是說,xml不但是置標語言,而且是可擴充套件的(extensible)置標語言。xml並非象html那樣,提供了一組事先已經定義好了的標籤,而是提供了乙個標準,利用這個標準,你可以根據實際需要定義自己的新的置標語言,並為你的這個置標語言規定它特有的一套標籤。準確的說,xml是一種源置標語言,它允許你根據它所提供的規則,制定各種各樣的置標語言。這也正是xml語言制定之初的目標所在。

「xml的制定目標為:

xml應該可以在網際網路上直接使用(*就象html那樣好用)。

xml應該支援各種不同的應用方式(*不但包括瀏覽,還包括對內容的分析)。

xml應該與sgml相容(*子承父業嘛,後面我們會講到,sgml是xml的直接先驅)。

處理xml檔案的應用程式應該容易編寫(*計算機系的研究生花上兩周的工夫就該差不多了)。

xml中的可選特性的數量應該減到最小,最好減至沒有(*可選特性經常造成混淆)。

xml檔案應該具有良好的可讀性,並且比較清晰(*別象html那樣,如果不借助瀏覽器,要想讀它簡直就是對你意志力和耐心的考驗)。

用xml設計新的置標語言應該方便快捷(你不必再去經歷標準制定的繁瑣程式了)。

xml設計的置標語言應該正式、簡潔(不然怎麼易寫易讀?)。

xml檔案應該容易編制(想想要用「記事本」寫個html是一件多麼可怕的工作)。

xml標記的簡潔性並不重要(你不必再去費盡心機減少標記)。

——extensible markup language (xml) 1.0 specs, the annotated version.」

讓我們來考慮乙個非常簡單的例子。如果我們需要定義乙個新的置標語言,叫做fclml(f_***pany s client list markup language)——f公司的客戶列表置標語言。這個語言應該定義一些標籤來代表可聯絡的客戶和有關他們的資訊。這組標籤很簡單,它們的優點是代表了一定的語意。讓我們回想一下上一節中這些資訊在html中是如何用標籤〈ul〉和〈li〉表示的。與之相比,下面這一段**,顯然更加清晰易讀:

《聯絡人列表》

《聯絡人》

《姓名》張三001

《公司》a公司zhang@aaa.***

《**》(010)62345678100001

《聯絡人》

《姓名》李四002

《公司》b公司li@bbb.

《**》(021)87654321200002

這一段**是乙個非常簡單的xml檔案。看上去它和html非常相象,但細心的人會發現這裡的標籤代表的不再是顯示格式,而是對於客戶資訊資料的語意解釋。

事實上,用xml定義的置標語言可以根據標記描述的側重點不同分為兩大類。一類偏重於語意描述,正如上面這個例子。還有一類偏重於顯示方式的描述,象現在已經出爐的xhtml、svg、**il,後面我們還會詳細講解。值得一提的是,這裡對於顯示方式的描述不僅限於對文字的描述,還可以包括向量圖形、圖象、聲音。比如,乙個形如〈emphasize〉的標籤在描述文字時可能是要求將文字加粗,而在描述聲音時則要求將音量加大。

不過,正如我們上節所述,僅僅將資料置標還不夠。為了讓別人讀懂這些資料,置標語言中的置標標準還需包括:

置標的語法

每個置標的含義

換句話說,如果想讓計算機應用程式讀懂並能處理這段資料,它還必須知道什麼是乙個有效的置標(如標籤),如何處理乙個有效的置標。具體地說,***scape瀏覽器如何知道怎樣顯示上面的這段xml檔案?標籤〈**〉是什麼含義?它究竟是不是乙個合法的標籤?它又應該以什麼方式表現?因此,我們的置標語言必須能夠告訴應用程式它所採用的置標的語法,以便於應用程式對其處理。

在xml中,置標的語法是通過檔案型別定義dtd(document type definition)來描述的。也就是說,我們通過dtd來描述什麼是有效的標籤,從而進一步定義置標語言的結構。在用xml定義的置標語言中,dtd與資料檔案是分離的部分。第三章我們將詳細討論dtd的定義方法。這裡我們先給出關於上例的dtd描述,讓大家先睹為快:

fclml.dtd:

<?xml version="1.0" encoding="gb2312"?>

同樣,除了定義置標的語法外,我們還需定義置標的具體含義。為了明確各個標籤的意義,xml使用與之相連的樣式單(style sheet),由它來向應用程式,比如瀏覽器,提供如何處理顯示的指示說明。乙個樣式單的具體格式我們在第四章再具體描述,現在我們只需知道,樣式單所作的規定可能是這樣的:

每當看到乙個〈聯絡人〉標籤,用乙個〈ul〉標籤顯示它。同樣,〈/聯絡人〉轉換為乙個〈/ul〉標籤。

所有的〈姓名〉標籤被轉換為〈li〉標籤加以顯示。同樣,〈/姓名〉轉換?li〉標籤。

所有的〈email〉標籤被轉換為〈li〉標籤加以顯示。同樣,〈/email〉轉換為〈/li〉標籤。

等等...

在這個樣式單的例子中,我們使用html的標籤功能來定義我們的fclml的顯示格式。但如果xml檔案不是由瀏覽器,而是由其它應用程式來進行處理,我們可能採用其它相應的標籤。

於是乎,我們的應用處理程式要綜合dtd,樣式單以及fclml檔案資料三方面要素,根據這些資料和規定來顯示它。

看到這裡,你可能會長嘆一聲:這不是越來越複雜了嗎?原先只要乙個html就能把資料和顯示方式都包括進去,現在我們需要fclml檔案,dtd,樣式單——總共三個檔案!這還不算,我們需要乙個處理工具把dtd、樣式單、fclml三者合一。別忘了,瀏覽器只是用來處理一種特定的置標語言(比如html)的,而不是用來處理所有置標語言的。這說明我們不但要把三個檔案合一,還要製作或購買乙個新的應用處理程式。太恐怖了!

「乙個被稱作xml處理器的軟體模型應該能夠讀入乙個xml檔案,並解釋其內容和結構。xml處理器是基於另乙個稱作應用的模型來進行這種處理的。

——extensible markup language (xml) 1.0 specs, the annotated version」

的確,對於初學者而言,在使用xml時確實要克服一些障礙,不過在下面一節中,你將看到,這是非常值得的。

什麼是MVC 轉貼

模型 檢視 控制器 mvc 是xerox parc在八十年代為程式語言 alltalk 80發明的一種軟體設計模式,至今已被廣泛使用。最近幾年被推薦為sun公司j2ee平台的設計模式,並且受到越來越多的使用 coldfusion 和 php 的開發者的歡迎。模型 檢視 控制器模式是乙個有用的工具箱,...

XML基礎(轉貼)

在xml文件中的所有文字都會被解析器解析。只有在cdata部件之內的文字會被解析器忽略。xml 解析器通常情況下會處理xml文件中的所有文字。當xml元素被解析的時候,xml元素內部的文字也會被解析 this text is also parsed xml解析器這樣做的原因是xml元素內部可能還包含...

xml學習 1什麼是XML

1,xml是一種元標記語言。可以定義自己需要的標記。建立時需要按照原則來建立,意義上具有靈活性。2,xml標記描述的是文件的結構和意義。它不描述頁面元素的格式化。可用樣式單為文件增加格式化資訊。文件本身只說明文件包括什麼標記,而不是說明文件看起來是什麼樣的。作為對照,html文件包括了格式化 結構和...