登錄

SGML

百科 > 互聯網 > SGML

1.什么是SGML[1]

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

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

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

2.SGML的主要特點[2]

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

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

3.SGML的構成[3]

  SGML文件本身包含3個部分:

  (1)SGML聲明(SGML Declaration)。

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

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

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

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

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

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

  SGML的ISO 8879是國際標準規(guī)范,所以可信度相當高,其規(guī)范結構也相當的嚴謹,此外SGML已使用二十幾年了,且自1996以來SGML的規(guī)范幾乎是未曾變更過,所以SGML是相當成熟的一種通用性標記語言。

  • 高可攜性

  SGML文件可以跨平臺使用,如可以在不同的計算機硬件或操作系統上被使用,甚至可以被不同的應用軟件來使用,因為SGML是一種高穩(wěn)定性的國際標準,加上已使用二十幾年,所以支持其格式的應用軟件與相關數據轉換技術就多,所以SGML文件可以在各應用領域中被廣泛采用,當然其可攜性相對就可以提高。

  • 高完整性

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

  2.SGML的缺點

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

  • 高復雜性

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

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

  • 費用昂貴

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

5.SGML的標準體系[5]

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

Image:SGML標準體系.jpg

  在此,我們重點介紹一下居于中間層的基礎標準,這些基礎標準可分為三類:信息描述標準、信息表現標準和信息關聯標準。

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

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

  (3)信息關聯標準:這一類標準是關于基于SGML進行信息管理與交換的標準,如:信息的鏈接與定位、基于時間的信息管理、知識結構與索引的表示法、交互式文檔中的動作管理。具體的標準包括:超媒體/基于時間的結構化語言標準HyTime(ISO/IEC 10744)、基于主題的地圖導航標準(ISO/IEC 13250)、司更改又互文檔交換標準ISMID。

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

6.SGML的現實問題[5]

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

  第一、SGML是一個嚴格而完整的系統,方便軟件應用并不是它的首要任務,所以SGML非常復雜,其復雜程度對于網絡上的日常應用簡直不可思議;

  第二、SGML十分龐大,既不容易學,又不容易使用,在計算機上實現十分困難;

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

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

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

評論  |   0條評論