登錄

SGML

1.什么是SGML[1]

  SGML是國際上定義電子文檔和內(nèi)容描述的標(biāo)準(zhǔn)。它源于1969年IBM公司開發(fā)的文檔描述語言GML,GML主要用來解決不同系統(tǒng)中文檔格式不同的問題。后經(jīng)過多年發(fā)展,1986年經(jīng)ISO批準(zhǔn)為國際標(biāo)準(zhǔn)ISO8897,并被稱為SGML。

  制定SGML的基本思想是把文檔的內(nèi)容與樣式分開。在SGML中,標(biāo)記分兩種:一種用來描述文檔顯示的樣式,稱為程序標(biāo)記;另一種用來描述文檔中語句的用途,稱為描述標(biāo)記。一個(gè)SGML文件通常分三個(gè)層次:結(jié)構(gòu)、內(nèi)容和樣式。結(jié)構(gòu)為組織文檔的元素提供框架,內(nèi)容是信息本身,樣式控制內(nèi)容的顯示。

  SGML的平臺無關(guān)性、結(jié)構(gòu)化、可擴(kuò)展等特性,使得它使用范圍很廣,被許多大型公司用來創(chuàng)建和發(fā)布信息。

2.SGML的主要特點(diǎn)[2]

  (1)它可以支持眾多的文檔結(jié)構(gòu)類型,例如布告、技術(shù)手冊、章節(jié)目錄、設(shè)計(jì)規(guī)范、各種信函等;

  (2)它可以創(chuàng)建與特定的軟硬件無關(guān)的文檔,因此很容易與使用不同計(jì)算機(jī)系統(tǒng)的用戶交換文檔。

3.SGML的構(gòu)成[3]

  SGML文件本身包含3個(gè)部分:

  (1)SGML聲明(SGML Declaration)。

  (2)文檔類型定義(Document Type Definition,DTD)。

  (3)文檔實(shí)例(Document Instance)。

  其中,SGML聲明是用來告訴SGML分析器(SGML Parser)在分析該份文件時(shí),所使用的字符集和文件特性。文件類型定義是用來聲明該份文件的結(jié)構(gòu)與語法參數(shù),不同的“文件內(nèi)容”使用不同的“標(biāo)記”來描述。在這里所謂“標(biāo)記”(Tag)是指用一特定符號將信息內(nèi)容中的某一部分加以注記,而此特定符號就稱為“標(biāo)記”。如“<”及“>”都是一種標(biāo)記。當(dāng)然標(biāo)記也可以是任何一小段文字。如“<NAME>”與“</NAME>”,而“<NAME>Iamstudent</NAME>”則是一段加上標(biāo)記的字串。

  在SGML標(biāo)記語言的術(shù)語中,“<keyword”稱為起始標(biāo)記,相對的,“/keyvord>”則稱為結(jié)束標(biāo)記。起始標(biāo)記與結(jié)束標(biāo)記是否一定要成對,可自行定義,而在起始標(biāo)記與結(jié)束標(biāo)記兩者之間的文字“keyword”稱為“元素”。至于文檔實(shí)例,就是加上標(biāo)記處理后的文件。

4.SGML的優(yōu)缺點(diǎn)[4]

  1.SGML的優(yōu)點(diǎn)
  • 高穩(wěn)定性

  SGML的ISO 8879是國際標(biāo)準(zhǔn)規(guī)范,所以可信度相當(dāng)高,其規(guī)范結(jié)構(gòu)也相當(dāng)?shù)膰?yán)謹(jǐn),此外SGML已使用二十幾年了,且自1996以來SGML的規(guī)范幾乎是未曾變更過,所以SGML是相當(dāng)成熟的一種通用性標(biāo)記語言。

  • 高可攜性

  SGML文件可以跨平臺使用,如可以在不同的計(jì)算機(jī)硬件或操作系統(tǒng)上被使用,甚至可以被不同的應(yīng)用軟件來使用,因?yàn)镾GML是一種高穩(wěn)定性的國際標(biāo)準(zhǔn),加上已使用二十幾年,所以支持其格式的應(yīng)用軟件與相關(guān)數(shù)據(jù)轉(zhuǎn)換技術(shù)就多,所以SGML文件可以在各應(yīng)用領(lǐng)域中被廣泛采用,當(dāng)然其可攜性相對就可以提高。

  • 高完整性

  制定SGML時(shí)就考慮須滿足廣泛的使用者,所以其規(guī)范制定得相當(dāng)完整,可以滿足不同應(yīng)用領(lǐng)域使用者的需求,且與SGML搭配使用的家族如HyTime與DSSSL也都是國際標(biāo)準(zhǔn),如HyTime符合ISO/IEC 10744的標(biāo)準(zhǔn),主要功能是描述動態(tài)文件的一種語言,而DSSSL(Doeument Style Semantic And Specification Language)符合ISO/IEC 10179的標(biāo)準(zhǔn),其制定目標(biāo)有兩個(gè),一為制定SGML文件顯示時(shí)的樣本形式,另一個(gè)是有轉(zhuǎn)換語言的功能。

  2.SGML的缺點(diǎn)

  上面提到SGML有高穩(wěn)定性與完整性的優(yōu)點(diǎn),這可使得SGML可以適用在各類應(yīng)用領(lǐng)域,但這相對的也是SGML致命的缺點(diǎn)。

  • 高復(fù)雜性

  由于SGML的高度完整性與穩(wěn)定性,相對的其復(fù)雜性也高,這一點(diǎn)可以說是SGML的主要缺陷,如果使用SGML語法規(guī)范來制定DTD中的元素(Element)、屬性(Attribute)與內(nèi)容實(shí)體(Entity),可能需要花上數(shù)年的時(shí)間才能完全了解其中的標(biāo)準(zhǔn),可見整個(gè)SGML系統(tǒng)是過于完善而變成復(fù)雜。

  不止SGML本身復(fù)雜,連同要開發(fā)SGML相關(guān)軟件也變得復(fù)雜,就開發(fā)SGML剖析器而言,用來檢查SGML文件中的控制標(biāo)記與格式,使用C++來撰寫都得發(fā)上幾萬行以上才行咧!

  • 費(fèi)用昂貴

  從SGML的高復(fù)雜性,其相對衍生出來的就是高費(fèi)用,先前也提過SGML通常被大企業(yè)應(yīng)用在大量的數(shù)據(jù)上,在SGML被應(yīng)用之前必需先制定其文件格式定義DTD,以供使用者能遵循這個(gè)DTD中定義的文件結(jié)構(gòu),但其應(yīng)用的文件數(shù)據(jù)通常是復(fù)雜的,所以制定該DTD也需花長時(shí)間才能完成,所以開發(fā)能適用的DTD的費(fèi)用足相當(dāng)昂貴的。

5.SGML的標(biāo)準(zhǔn)體系[5]

  SGML標(biāo)準(zhǔn)的體系可分為三個(gè)層次:第一層次是元語言標(biāo)準(zhǔn)——SGML標(biāo)準(zhǔn);第二層次是基礎(chǔ)標(biāo)準(zhǔn),如:文檔樣式語義與規(guī)范語言標(biāo)準(zhǔn)(DSSSL)等,是該體系的基本標(biāo)準(zhǔn);第三層次是具體的應(yīng)用標(biāo)準(zhǔn),如:Internet上已廣泛應(yīng)用的HTML等標(biāo)準(zhǔn)。也就是說,在XML標(biāo)準(zhǔn)出現(xiàn)之前,SGML標(biāo)準(zhǔn)已經(jīng)形成了完善的體系,并有許多建立于其上的應(yīng)用系統(tǒng)與應(yīng)用標(biāo)準(zhǔn)。如圖所示。

Image:SGML標(biāo)準(zhǔn)體系.jpg

  在此,我們重點(diǎn)介紹一下居于中間層的基礎(chǔ)標(biāo)準(zhǔn),這些基礎(chǔ)標(biāo)準(zhǔn)可分為三類:信息描述標(biāo)準(zhǔn)、信息表現(xiàn)標(biāo)準(zhǔn)和信息關(guān)聯(lián)標(biāo)準(zhǔn)。

  (1)信息描述標(biāo)準(zhǔn):這一類標(biāo)準(zhǔn)是與SGML標(biāo)準(zhǔn)本身直接相關(guān)的標(biāo)準(zhǔn),如:SGML公共標(biāo)識符注冊標(biāo)準(zhǔn)(ISO 9070),SGML技術(shù)報(bào)告(ISO TR 9573)、SGML一致性測試系統(tǒng)標(biāo)準(zhǔn)(ISO/IEC 13673)、文檔處理APIs標(biāo)準(zhǔn)等等。

  (2)信息表現(xiàn)標(biāo)準(zhǔn):這一類標(biāo)準(zhǔn)是關(guān)于組合文檔、超媒體文檔的描述與處理的標(biāo)準(zhǔn)。如:文檔處理框架與邏輯文檔格式化、多語種字體信息、信息交換與服務(wù)等等。具體標(biāo)準(zhǔn)包括:文檔樣式語義與規(guī)范語言標(biāo)準(zhǔn)DSSSI,(ISO/IEC 10179)、標(biāo)準(zhǔn)頁面描述語言SPDL(ISO/IEC 10180)、字體標(biāo)準(zhǔn)Fonts(ISO/IEC 9541)、字體注冊標(biāo)準(zhǔn)Font Registration(ISO/IEC 10036)等等。

  (3)信息關(guān)聯(lián)標(biāo)準(zhǔn):這一類標(biāo)準(zhǔn)是關(guān)于基于SGML進(jìn)行信息管理與交換的標(biāo)準(zhǔn),如:信息的鏈接與定位、基于時(shí)間的信息管理、知識結(jié)構(gòu)與索引的表示法、交互式文檔中的動作管理。具體的標(biāo)準(zhǔn)包括:超媒體/基于時(shí)間的結(jié)構(gòu)化語言標(biāo)準(zhǔn)HyTime(ISO/IEC 10744)、基于主題的地圖導(dǎo)航標(biāo)準(zhǔn)(ISO/IEC 13250)、司更改又互文檔交換標(biāo)準(zhǔn)ISMID。

  在這些協(xié)議中,信息表現(xiàn)部分最重要的標(biāo)準(zhǔn)是DSSSL(Document Style Semantics and Specification Language),信息關(guān)聯(lián)部分最重要的是HyTime(Information processing-Hypermedia/Time-based Structuring Language - 2d edition)。這兩個(gè)標(biāo)準(zhǔn)也是對XML標(biāo)準(zhǔn)體系中影響最為深刻的兩個(gè)。其中前者是一種與平臺無關(guān)的進(jìn)行SGML文件處理的語言,主要包括轉(zhuǎn)換語言、樣式語言、表達(dá)式語言和標(biāo)準(zhǔn)文檔查詢語言(SDQL),XML相關(guān)標(biāo)準(zhǔn)中有很多內(nèi)容是從DSSSI。中繼承過來的。后者則定義了一個(gè)元素類型的集合,以便使用者可以利用這些類型,以一種標(biāo)準(zhǔn)的方式,在已有的SGML文檔中提供超鏈及其他功能。在XML相關(guān)標(biāo)準(zhǔn)巾對此也做了繼承。

6.SGML的現(xiàn)實(shí)問題[5]

  SGML在其開發(fā)之初,是以作為一種規(guī)范性的標(biāo)準(zhǔn)為出發(fā)點(diǎn)的,因而重視詳盡性,而忽視實(shí)用性成了它的致命弱點(diǎn),可以這樣說,SGML從來沒有在網(wǎng)絡(luò)上廣泛應(yīng)用過。具體而言:

  第一、SGML是一個(gè)嚴(yán)格而完整的系統(tǒng),方便軟件應(yīng)用并不是它的首要任務(wù),所以SGML非常復(fù)雜,其復(fù)雜程度對于網(wǎng)絡(luò)上的日常應(yīng)用簡直不可思議;

  第二、SGML十分龐大,既不容易學(xué),又不容易使用,在計(jì)算機(jī)上實(shí)現(xiàn)十分困難;

  第三、在SGML中有許多語法語義標(biāo)準(zhǔn),它們既不方便而且消耗昂貴,這導(dǎo)致開發(fā)SGML軟件非常昂貴。目前比較便宜的SGML軟件之一是Adobe Frame Maker,其標(biāo)準(zhǔn)版本價(jià)格為850美元,而Adobe Frame Maker+SGML是以1995美元售出的;

  第四,種種不足,導(dǎo)致了幾個(gè)主要的瀏覽器廠商都明確拒絕支持SGML,這無疑造成了SGML在網(wǎng)上傳播的最大障礙。

  鑒于以上因素,SGML已明顯不適用于網(wǎng)絡(luò)社會的需要,“如何使SGML能成功地運(yùn)用于網(wǎng)絡(luò)?”,這一問題已自然而然地提上了議程。1996年8月,GCA(圖形通信協(xié)會)召集SGML開發(fā)者們舉行了一次會議,與會者明確表示SGML在某些方面已經(jīng)落伍了,這些種種不足已經(jīng)成為了它廣泛傳播的障礙,討論的結(jié)果認(rèn)為有必要考慮怎樣修補(bǔ)SGML。

評論  |   0條評論