當前位置:編程學習大全網 - 編程語言 - 請大家指點壹下關於VC裏的XML編程問題

請大家指點壹下關於VC裏的XML編程問題

XML:Extentsible Markup Language(可擴展標記語言)的縮 寫,是用來定義其它語言的壹種元語言,其前身是SGML(標準通用標記語言)。它沒有標簽集(tag set),也沒有語法規則(grammatical rule),但 是它有句法規則(syntax rule)。任何XML文檔對任何類型的應用以及正確 的解析都必須是良構的(well-formed),即每壹個打開的標簽都必須有匹配的結束標簽,不得含有次序顛倒的標簽,並且在語句構成上應符合技術規範的要求。 XML文檔可以是有效的(valid),但並非壹定要求有效。所謂有效文檔是指其符合其文檔類型定義(DTD)的文檔。如果壹個文檔符合壹個模式(schema)的規定 ,那麽這個文檔是"模式有效的(schema valid)"。

XML是計算機系統之間交換數據的增長很快的標準,微軟采用這種版權語言(或稱標準)來描述微軟許多應用程序的XML數據。

正象HTML壹樣,可擴展置標語言XML(eXtensible Markup Language)也是壹種置標語言。它同樣依賴於描述壹定規則的標簽和能夠讀懂這些標簽的應用處理工具來發揮它的強大功能。這壹點,從XML的命名上也可窺見壹斑。

“關於此規範的正確題目,亦即XML的正確全名,應該是Extensible Markup Language, eXtensible Markup Language只不過是壹個拼寫錯誤罷了。但是,現在簡寫XML不僅正確,而且正如它在本規範的標題中壹樣,是Extensible Markup Language的官方名稱。

這個名稱和簡寫是由James Clark最先提出的,其它可供選擇的名稱還包括小型標準置標語言MGML (Minimal Generalized Markup Language), 標準置標語言的小型結構MAGMA (Minimal Architecture For Generalized Markup Applications), 以及互聯網置標結構語言SLIM (Structured Language for Internet Markup)。

——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_company s Client List Markup Language)——F公司的客戶列表置標語言。這個語言應該定義壹些標簽來代表可聯系的客戶和有關他們的信息。這組標簽很簡單,它們的優點是代表了壹定的語意。讓我們回想壹下上壹節中這些信息在HTML中是如何用標簽〈UL〉和〈LI〉表示的。與之相比,下面這壹段代碼,顯然更加清晰易讀:

<聯系人列表>

<聯系人>

<姓名>張三</姓名>

<ID>001</ID>

<公司>A公司</公司>

<EMAIL>zhang@aaa.com</EMAIL>

<電話>(010)62345678</電話>

<地址>

<街道>五街1234號</街道>

<城市>北京市</城市>

<省份>北京</省份>

<ZIP>100001</ZIP>

</地址>

</聯系人>

<聯系人>

<姓名>李四</姓名>

<ID>002</ID>

<公司>B公司</公司>

<EMAIL>li@bbb.org</EMAIL>

<電話>(021)87654321</電話>

<地址>

<街道>南京路9876號</街道>

<城市>上海</城市>

<省份>上海</省份>

<ZIP>200002</ZIP>

</地址>

</聯系人>

</聯系人列表>

這壹段代碼是壹個非常簡單的XML文件。看上去它和HTML非常相象,但細心的人會發現這裏的標簽代表的不再是顯示格式,而是對於客戶信息數據的語意解釋。

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

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

置標的語法

每個置標的含義

換句話說,如果想讓計算機應用程序讀懂並能處理這段數據,它還必須知道什麽是壹個有效的置標(如標簽),如何處理壹個有效的置標。具體地說,Netscape瀏覽器如何知道怎樣顯示上面的這段XML文件?標簽〈電話〉是什麽含義?它究竟是不是壹個合法的標簽?它又應該以什麽方式表現?因此,我們的置標語言必須能夠告訴應用程序它所采用的置標的語法,以便於應用程序對其處理。

在XML中,置標的語法是通過文件類型定義DTD(Document Type Definition)來描述的。也就是說,我們通過DTD來描述什麽是有效的標簽,從而進壹步定義置標語言的結構。在用XML定義的置標語言中,DTD與數據文件是分離的部分。第三章我們將詳細討論DTD的定義方法。這裏我們先給出關於上例的DTD描述,讓大家先睹為快:

fclml.dtd:

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

<!ELEMENT 聯系人列表 (聯系人)*>

<!ELEMENT 聯系人 (姓名,ID,公司,EMAIL,電話,地址)>

<!ELEMENT 地址 (街道,城市,省份)>

<!ELEMENT 姓名 (#PCDATA)>

<!ELEMENT ID (#PCDATA)>

<!ELEMENT 公司 (#PCDATA)>

<!ELEMENT EMAIL (#PCDATA)>

<!ELEMENT 電話 (#PCDATA)>

<!ELEMENT 街道 (#PCDATA)>

<!ELEMENT 城市 (#PCDATA)>

<!ELEMENT 省份 (#PCDATA)>

同樣,除了定義置標的語法外,我們還需定義置標的具體含義。為了明確各個標簽的意義,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”

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

RSS (Really Simple jkndication) 是壹種用於發布和獲取網絡內容(例如頭條新聞)的XML格式。使用RSS閱讀器來閱讀,妳可以不用壹個個去開頁面,也能夠很快地知道關註網絡內容更新了沒有。

目前RSS有多個版本,如:0.90、0.91、0.92、0.93、0.94、1.0 和 2.0,而應用最廣泛的有RSS 1.0 和 RSS 2.0 兩個版本

  • 上一篇:如何正確的選擇測溫儀
  • 下一篇:程序員都是學霸嗎
  • copyright 2024編程學習大全網