SGML
出自 MBA智库百科(https://wiki.mbalib.com/)
- SGML(Standard Generalized Markup Language,即標準通用標記語言)
目錄 |
什麼是SGML[1]
SGML是國際上定義電子文檔和內容描述的標準。它源於1969年IBM公司開發的文檔描述語言GML,GML主要用來解決不同系統中文檔格式不同的問題。後經過多年發展,1986年經ISO批准為國際標準ISO8897,並被稱為SGML。
制定SGML的基本思想是把文檔的內容與樣式分開。在SGML中,標記分兩種:一種用來描述文檔顯示的樣式,稱為程式標記;另一種用來描述文檔中語句的用途,稱為描述標記。一個SGML文件通常分三個層次:結構、內容和樣式。結構為組織文檔的元素提供框架,內容是信息本身,樣式控制內容的顯示。
SGML的平臺無關性、結構化、可擴展等特性,使得它使用範圍很廣,被許多大型公司用來創建和發佈信息。
SGML的主要特點[2]
(1)它可以支持眾多的文檔結構類型,例如佈告、技術手冊、章節目錄、設計規範、各種信函等;
(2)它可以創建與特定的軟硬體無關的文檔,因此很容易與使用不同電腦系統的用戶交換文檔。
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”稱為“元素”。至於文檔實例,就是加上標記處理後的文件。
SGML的優缺點[4]
- 1.SGML的優點
- 高穩定性
SGML的ISO 8879是國際標準規範,所以可信度相當高,其規範結構也相當的嚴謹,此外SGML已使用二十幾年了,且自1996以來SGML的規範幾乎是未曾變更過,所以SGML是相當成熟的一種通用性標記語言。
- 高可攜性
SGML文件可以跨平臺使用,如可以在不同的電腦硬體或操作系統上被使用,甚至可以被不同的應用軟體來使用,因為SGML是一種高穩定性的國際標準,加上已使用二十幾年,所以支持其格式的應用軟體與相關數據轉換技術就多,所以SGML文件可以在各應用領域中被廣泛採用,當然其可攜性相對就可以提高。
- 高完整性
制定SGML時就考慮須滿足廣泛的使用者,所以其規範制定得相當完整,可以滿足不同應用領域使用者的需求,且與SGML搭配使用的家族如HyTime與DSSSL也都是國際標準,如HyTime符合ISO/IEC 10744的標準,主要功能是描述動態文件的一種語言,而DSSSL(Doeument Style Semantic And Specification Language)符合ISO/IEC 10179的標準,其制定目標有兩個,一為制定SGML文件顯示時的樣本形式,另一個是有轉換語言的功能。
- 2.SGML的缺點
上面提到SGML有高穩定性與完整性的優點,這可使得SGML可以適用在各類應用領域,但這相對的也是SGML致命的缺點。
- 高複雜性
由於SGML的高度完整性與穩定性,相對的其複雜性也高,這一點可以說是SGML的主要缺陷,如果使用SGML語法規範來制定DTD中的元素(Element)、屬性(Attribute)與內容實體(Entity),可能需要花上數年的時間才能完全瞭解其中的標準,可見整個SGML系統是過於完善而變成複雜。
不止SGML本身複雜,連同要開發SGML相關軟體也變得複雜,就開發SGML剖析器而言,用來檢查SGML文件中的控制標記與格式,使用C++來撰寫都得發上幾萬行以上才行咧!
- 費用昂貴
從SGML的高複雜性,其相對衍生出來的就是高費用,先前也提過SGML通常被大企業應用在大量的數據上,在SGML被應用之前必需先制定其文件格式定義DTD,以供使用者能遵循這個DTD中定義的文件結構,但其應用的文件數據通常是複雜的,所以制定該DTD也需花長時間才能完成,所以開發能適用的DTD的費用足相當昂貴的。
SGML的標準體系[5]
SGML標準的體系可分為三個層次:第一層次是元語言標準——SGML標準;第二層次是基礎標準,如:文檔樣式語義與規範語言標準(DSSSL)等,是該體系的基本標準;第三層次是具體的應用標準,如:Internet上已廣泛應用的HTML等標準。也就是說,在XML標準出現之前,SGML標準已經形成了完善的體系,並有許多建立於其上的應用系統與應用標準。如圖所示。
在此,我們重點介紹一下居於中間層的基礎標準,這些基礎標準可分為三類:信息描述標準、信息表現標準和信息關聯標準。
(1)信息描述標準:這一類標準是與SGML標準本身直接相關的標準,如:SGML公共標識符註冊標準(ISO 9070),SGML技術報告(ISO TR 9573)、SGML一致性測試系統標準(ISO/IEC 13673)、文檔處理APIs標準等等。
(2)信息表現標準:這一類標準是關於組合文檔、超媒體文檔的描述與處理的標準。如:文檔處理框架與邏輯文檔格式化、多語種字體信息、信息交換與服務等等。具體標準包括:文檔樣式語義與規範語言標準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相關標準巾對此也做了繼承。
SGML的現實問題[5]
SGML在其開發之初,是以作為一種規範性的標準為出發點的,因而重視詳盡性,而忽視實用性成了它的致命弱點,可以這樣說,SGML從來沒有在網路上廣泛應用過。具體而言:
第一、SGML是一個嚴格而完整的系統,方便軟體應用並不是它的首要任務,所以SGML非常複雜,其複雜程度對於網路上的日常應用簡直不可思議;
第二、SGML十分龐大,既不容易學,又不容易使用,在電腦上實現十分困難;
第三、在SGML中有許多語法語義標準,它們既不方便而且消耗昂貴,這導致開發SGML軟體非常昂貴。目前比較便宜的SGML軟體之一是Adobe Frame Maker,其標準版本價格為850美元,而Adobe Frame Maker+SGML是以1995美元售出的;
第四,種種不足,導致了幾個主要的瀏覽器廠商都明確拒絕支持SGML,這無疑造成了SGML在網上傳播的最大障礙。
鑒於以上因素,SGML已明顯不適用於網路社會的需要,“如何使SGML能成功地運用於網路?”,這一問題已自然而然地提上了議程。1996年8月,GCA(圖形通信協會)召集SGML開發者們舉行了一次會議,與會者明確表示SGML在某些方面已經落伍了,這些種種不足已經成為了它廣泛傳播的障礙,討論的結果認為有必要考慮怎樣修補SGML。