A.概述性問題 A.1 什么是XML? XML 全稱是“可擴展標識語言“(Extensible Markup Language)。之所以稱之為可擴展,是因為它不像HTML 那樣只有固定的形式。它是被用來使SGML 能在萬維網(wǎng)上能應用自如! XML并不是一個獨立的,預定義的標識語言。它是一種元語言。它是用來描述其他語言的語言。它允許你自己設計你的標識。(HTML 是一種預定義的標識語言。HTML 只是在一類特定的文件中定義了一種描述信息的方法。而XML 能允許你在不同的文件中定義你自己設計的標識語言。)這是因為XML 是用SGML (“通用標識語言標準”國際標準的標識元語言)書寫的。 A.2 XML的目的是什么? XML是被設計用來使SGML 能在萬維網(wǎng)上能自如應用的:方便地定義文件類型,方便地制作和管理用SGML定義的文件,在網(wǎng)上方便地傳輸和共享這些文件! A.3 什么是SGML? SGML的全稱是“Standard Generalized Markup Language“(通用標識語言標準)。它是國際上定義電子文件結(jié)構(gòu)和內(nèi)容描述的標準。在往上有以下相關(guān)資源: SGML FAQ: http://www.infosys.utas.edu.au/info/sgmlfaq.txt SGML 主頁: http://www.oasis-open.org/cover/sgml-xml.html A.4 什么是HTML? HTML的全稱是“HyperText Markup Language “(超文本標識語言)。它是SGML在網(wǎng)絡上的一個特殊應用! A.5 XML,SGML,HTML是不是一回事? 不竟然。SGML是XML和HTML的母語言。SGML的覆蓋面很廣。它幾乎涉及人們生活的每一個領(lǐng)域。它被用來描述成千上萬中文件。HTML只是其中一種文件類型,是一種在網(wǎng)上最常用的類型。它定義了一種簡單而固定且含標識的文件類型! XML是SGML的簡化版。為了實現(xiàn)更加方便地編寫和理解應用程序,更加方便地在網(wǎng)絡上傳輸信息,更加方便地實現(xiàn)互操作性,XML申略了一些SGML中復雜和不常用的部分。但XML還能和SGML一樣通過解析! A.6 SGML/XML 和C/ C++?什么不同? C和C++和Fortran, Pascal, Basic, 或是Java一樣都是編程語言。是用來制定運算和操作的! 而SGML和XML標是說明性的語言。它們是用來表現(xiàn)信息的。它們使得信息能被程序正常地存儲傳輸和處理。它們本身而言,并不能產(chǎn)生什么操作。操作要由應用程序來實現(xiàn)! A.7 是由誰負責XML? XML是W3C(World Wide Web Consortium 萬維網(wǎng)絡聯(lián)盟)的一個項目。XML不是任何一家公司的私有財產(chǎn)! A.8 為什么XML是一項重要的技術(shù)? 應為它解決了兩個制約網(wǎng)絡發(fā)展的問題: 1.基礎是單一固定的文件類型。(HTML); 2.完整的SGML過于復雜! A.9 為什么不只是擴展HTML? 不同的廠家在開發(fā)HTML時產(chǎn)生了許多有趣但卻不兼容的發(fā)明。這已使HTML不堪重負。因為這使得你只能用一種方法表現(xiàn)你的信息。XML卻允許許許多多的個人與組織來創(chuàng)造他們自己的標識語言。應用這些標識語言他們可以在自己的領(lǐng)域內(nèi)自由地交換信息。HTML在表現(xiàn)信息方面是有缺陷的。當然我們必須承認它現(xiàn)在仍然扮演著重要的角色。但許多新的應用領(lǐng)域需要更加強大和靈活的工具! B.SGML的使用(包括HTML的各種瀏覽器) B.1 為什么我們要推薦XML而不主張HTML? 1.我們可以用XML設計自己的文件類型。 2.信息的內(nèi)容將更加豐富,更加方便使用。在XML中超文本鏈接的能力比HTML更強。 3. XML能使得瀏覽器的表現(xiàn)形式更加豐富。 4.處理XML文件比.處理SGML文件來得簡單。信息的開放性和重復使用的性能斗將提高! 5.合法(Valid 參見D中Valid與-formed)的XML文件在SGML中也是合法的。 B.2 我是不是必須由SGML或是HTML轉(zhuǎn)向XML? 不是的,F(xiàn)存的SGML和HTML的應用軟件仍能正常處理現(xiàn)有的文件! C. SGML 和HTML的編寫 C.1 XML是否已取代了HTML? 沒有。XML并沒有取代HTML。它只是給了你一種新的選擇。HTML將仍在一段時間內(nèi)廣泛地被使用。HTML的DTD(參見C中DTD)將既有XML版本,又有SGML版本。但XML版本更加簡單。 C.2 XML文件是怎樣的? 它的基本結(jié)構(gòu)和SGML和HTML差不多。XML文件可以非常簡單。它可以不需要文件類型說明,而直接是你自己設計的內(nèi)嵌式標識。如下面一段代碼: Hello, world! Stop the planet, I want to get off! 當然它也可以更加復雜些。如DTD聲明,內(nèi)嵌子集,等等: Hello, world! Vitam capias C.3 是不是HTML有一個XML版本? 已經(jīng)有好幾個HTML的XML版本,但都只是在準備階段,并未完成! C.4 既然說XML是SGML的子集,我能不能用SGML的工具直接處理XML文件? 是的.而且非常簡單。一個結(jié)構(gòu)完整的XML文件和HTML文件非常相像。當然也有一些小的而且是重要的不同。在實際操作當中的不同是XML文件必須搖遵守一定的法則。HTML的瀏覽器可以允許一些小的錯誤。而如果是XML行不通了。 C.5 什么是DTD?我能在哪兒找到? DTD的全稱是“Document Type Definition“(文件類型定義)。具體地說,DTD是一個或是一些用XML書寫的文件。它包含了對一種文件的正式定義。它定義了文件中的元素能用什么名字,能放在什么位置,應該怎樣組合。在這里舉一個簡單的例子。比如說你想要你的文件可以描述一組,其中每個由可以包含若干個。那么你的DTD中應該有以下語句: 這樣一個框架定義了一個表(list),它可以包含若干個項(items)。每一個項只能包括文本的內(nèi)容。當處理器處理XML文件時將自動檢查DTD,以此確定文件中元素從哪而來,以及它們之間是什么關(guān)系。上面的框架允許你生成下面的一個表: ChocolateMusicSurfing 而這樣一個表在屏幕上是怎樣一個表象,取決于你的樣式表(Stylesheet)。在HTML中你要在文件中指定應是怎樣的形式。使用DTD表明你能夠確定一類文章的結(jié)構(gòu)和格式! 要想找一個DTD看看嗎?實際上,各個領(lǐng)域里的SGML DTD由成千上萬。你可以參看SGML 的網(wǎng)頁! C.6 我總是聽說DTD的替代者Schema,它到底是什么? 有許多XML的開發(fā)者并不滿意XML的規(guī)范。原因有兩點: 1.既然XML在說明結(jié)構(gòu)信息是有很多好處,那么用來描述文件類型的結(jié)構(gòu)的文件(這是Schema)為什么不是也用XML書寫的呢?這樣做的好處不光是統(tǒng)一,而且便于用正規(guī)的文件工具編輯管理Schema。 2.過去的DTD對數(shù)據(jù)的限制不夠。比如說你想要一個元素只取負值,或是必須有一個值,DTD很難做到! C.7 我能用XML作算術(shù)運算嗎? 只要你的文件類型提供算術(shù)類型,知識可以的。W3C已經(jīng)有了一個MathML(Mathematical Markup Language數(shù)學標識語言)的計劃。清參看W3C(1999年7月)發(fā)布的MathML規(guī)范! C.8 在XML中,我能使用Java, ActiveX嗎? 這取決于瀏覽器制造者運用的工具. XML是用來描述信息的; 描述性語言和用來描述內(nèi)嵌函數(shù)功能的語言的目的是使得信息能在客戶端被操作.. XML本身提供了一種定義標識的方法,而這些標識是描述性語言所必需的. XML是一個中立的標準.他不支持或是反對任何一種描述性語言.所以說它是一個開放的領(lǐng)域. 描述性語言是在”Extensible Style Language”XSL (可擴展類型語言).計劃中提出的. C.9 我能用Java編寫或是管理XML文件嗎? 可以.我們可以用任何一種編程語言從任何一種XML格式的信息中提取數(shù)據(jù). D.高級開發(fā)者和應用者(包括網(wǎng)絡管理員和服務器操作人員) D.1哪兒可以找到XML的規(guī)范? 請參見: http://www.w3.org/TR/REC-xml D.2 "DTDless" ,"valid",和"well-formed"這些術(shù)語是什么意思? 在完整的SGML中,我們用DTD描述特定文件中的各種標識.但DTD的生成是一件極其復雜的工作.所以XML被設計成可以缺省DTD. DTDless表示您可以創(chuàng)造一個標識而不需正式的定義.當然這也要付出代價.您不能在其他的文件中對同樣的形式采用自動的處理. DTDless的文件是以一種非正式的方式定義它的標識的.標識是在哪兒出現(xiàn)的在哪兒定義它.但當一個比方說是瀏覽器的XML應用程序打開了一個DTDless的文件,它必須要有辦法來理解文件的結(jié)構(gòu).但它又沒有DTD,所以規(guī)則上有了一些改變. 舉一個例子: HTML中的 是被定義為”EMPTY”(空)的.它并不需要”end-tag”(結(jié)尾標簽). DTD 的XML應用程序在打開一個缺省DTD. 的文件,讀到時不知道是否需要一個”end-tag”.所以”well-formed”(結(jié)構(gòu)良好)的定義也變得重要了. ”well-formed”可以使得一般元素和”EMPTY”元素區(qū)分開來. D.2.1 ”well-formed”(結(jié)構(gòu)良好的)文件 1.如果一個文件沒有DTD,它必須在開頭處有一個"Standalone Document Declaration"(獨立文件聲明): . ...... 2.除了空素以外, 標記必須前后匹配. 3.所有的”attribute”值都要用引號括起來. 4. ”EMPTY”元素的tag要么用”/>”結(jié)尾,要么要補成”non-EMPTY”(非空)的元素. 比如說: 要么寫為 或是 5.文件中必須不能出現(xiàn)”markup-start “(標識開始符), 比如”