介紹,其它俗稱,優劣點,版本情況,觀點,語言特點,樣式,檔案描述,有效性,組成,標記類型,描述性,程式性,聲明,補充檔案,終端變數,終端常量,語法,元素語法,注釋語法,其它語法特點,定義,標準體系,相關,派生,部分相關,實際套用,
介紹
“通用標言
”是1986年
國際標準化組織出版發布的一個信息管理方面的國際標準(ISO
8879:1986 信息處理)。ISO/
ANSI/
ECMA的一個共同標準,一種用來注釋
文本文檔,提供文檔片斷的類型信息的規範。該標準定義獨立於平台和套用的文本文檔的格式、索引和連結信息,為用戶提供一種類似於語法的機制,用來定義文檔的結構和指示文檔結構的標籤。其中
“標記
”的含義是指插入到文檔中的標記。
標記分為兩種:一種稱為
“程式性的標記
”,用來描述文檔顯示的樣式;另一種稱為
“描述性標記
”,用來描述文檔中的文字的用途。制定
“通用標言
”的
基本思想是
把文檔的
內容與樣式分開。
“通用標言
”的先驅和基礎是
“IBM
通用標記語言”,
“通用標言
”是當今創建
結構化文檔描述語言規則的戰略集合。很多網路頁面是用
超級文本標記表示出的,就是使用
“IBM通用標記語言
”概念創建文檔的例子。
可擴展標記語言也根源於
“IBM通用標記語言
”。
除了“通用標言”的標準套之外,最終還將包括:“通用標言”檔案交換格式、文檔樣式語義和規範語言、標準頁面描述語言、文字描述和處理語言的一個參考模型、字型和字元信息交換標準、以及一套標準字型。
其它俗稱
標準通用置標語言、標準通用標註語言、標準通用標誌語言、標準通用
標識(或
標示)語言、標準通用化標記語言。
優劣點
優點
“通用標言”的ISO 8879是國際標準規範,所以可信度相當高,其規範結構也相當的嚴謹,此外“通用標言”已使用二十幾年了,且自1996以來“通用標言”的規範幾乎是未曾變更過,所以“通用標言”是相當成熟的一種通用性標記語言。
“通用標言
”的檔案可以跨平台使用,如可以在不同的計算機硬體或作業系統上被使用,甚至可以被不同的套用軟體來使用,因為
“通用標言
”是一種高穩定性的
國際標準,加上已使用二十幾年,所以支持其格式的套用軟體與相關數據轉換技術就多,所以
“通用標言
”的檔案可以在各套用領域中被廣泛採用,當然其可攜性相對就可以提高。
制定“通用標言”時就考慮須滿足廣泛的使用者,所以其規範制定得相當完整,可以滿足不同套用領域使用者的需求,且與“通用標言”搭配使用的家族如HyTime與文檔樣式語義和規範語言也都是國際標準,如HyTime符合ISO/IEC 10744的標準,主要功能是描述動態檔案的一種語言,而文檔樣式語義和規範語言符合ISO/IEC 10179的標準,其制定目標有兩個,一為制定“通用標言”檔案顯示時的樣本形式,另一個是有轉換語言的功能。
二、劣點
以上所述提到的“通用標言”有高穩定性與完整性的優點,這可使得“通用標言”可以適用在各類套用領域,但這相對的也是“通用標言”致命的缺點。
由於“通用標言”的高度完整性與穩定性,相對的其複雜性也高,這一點可以說是“通用標言”的主要缺陷,如果使用“通用標言”語法規範來制定DTD中的元素、屬性與內容實體,可能需要花上數年的時間才能完全了解其中的標準,可見整個“通用標言”系統是過於完善而變成複雜。
不止“通用標言”本身複雜,連同要開發“通用標言”相關軟體也變得複雜,就開發“通用標言”剖析器而言,用來檢查“通用標言”檔案中的控制標記與格式,使用C++(一套利用更基礎的程式語言開發的“面向對象的高級程式語言”)來撰寫都得花上幾萬行以上。
從“通用標言”的高複雜性,其相對衍生出來的就是高費用,先前也提過“通用標言”通常被大企業套用在大量的數據上,在“通用標言”被套用之前必需先制定其檔案格式定義DTD,以供使用者能遵循這個DTD中定義的檔案結構,但其套用的檔案數據通常是複雜的,所以制定該DTD也需花長時間才能完成,所以開發能適用的DTD的費用足相當昂貴的。
其次,由於
“通用標言
”的獨立性,使得通用標言在許多場合都有用武之地。同
可擴展標記語言相比,定義的功能很強大,缺點是通用標言不適用於全球資訊網數據描述,而且
“通用標言
”的軟體價格非常昂貴。
版本情況
“通用標言”最標準的三個版本如下:
原始“通用標言”。
擴展的命名規則
“通用標言
”。(外語縮寫:
ENR、添加擴展的命名規則以允許任意的語言和腳本標記。比如子集
可擴展標記語言使用漢語作為標籤一樣。)
全球資訊網
“通用標言
”。(俗稱擴展命名規則和全球資訊網的結合、外語縮寫:WebSGML、為了更好地支持
XML和WWW的要求。)
application/sgml、text/sgml、text/x-sgml、application/x-sgml;
“通用標言
”己解析的
外部實體信息檔案(application/x-sgml-external-parsed-entity)、
“通用標言
”的實體信息檔案(application/x-sgml-entity)、
“通用標言
”序言部分信息檔案(application/x-sgml-preamble)。
觀點
有觀點建議“通用標言”的注釋應如何格式化,而不是作為一種語言。
於是提出如下設計:
中文百科 詞條=標準通用標記語言;
中文百科/ 詞條=標準通用標記語言;
中文百科(詞條=標準通用標記語言)
語言特點
通用標言是一種描述語言的語言,通用標言定義了以電子形式表示文本的方法。它的特
點有:
正式的,能允許驗證文檔的正確性;
結構化的,能夠處理複雜的文檔;
可擴充的,能夠支持大型信息存儲的管理。
“通用標言”規定了在文檔中嵌入描述標記的標準格式,指定了描述文檔結構的標準方法,目前在全球資訊網上使用的超級文本標記語言格式便是使用固定標籤集的一種“通用標言”文檔。用於“通用標言”可以支持無數的文檔結構類型,並且可以創建與特定的軟硬體無關的文檔,因此很容易與使用不同計算機系統的用戶交換文檔。
樣式
“通用標言
”本身正在定義樣式的設定標準,即文檔樣式
語義學和規範語言。
使用
“通用標言
”對多媒體的創作將帶來許多好處。首先,由於其
規範性,通用標言可以使創作人員更集中於內容的創作,可提高作品的重複使用性能、可移植性能以及共享性能。例如,可使創作人員更集中於內容的創作,可提高作品的重複使用性能、可移植性能以及共享性能等;
“通用標言
”的使用範圍很廣,除了傳統的
電子出版物之外,
“通用標言
”還可用在其他許多場合。例如,前面介紹的
超媒體和
超文本文檔、
全球資訊網頁面的製作、資料庫、電子郵件、
專家系統、雷射唱片-唯讀存儲器出版物、互動式電子技術手冊等方面都大有用武之地。
檔案描述
有效性
以下為與“有效性檢查”的定義
“合乎規範”的“通用標言”文檔:一個合乎規範的“通用標言”的文檔必須是一個類型有效的“通用標言”的文檔,一個標記有效的“通用標言”的文檔,或兩者。
“類型有效”:對於每一個文檔實例,都有一個相關的“文檔類型聲明”。
“標籤有效”:所有的文檔實例都是完全被標記的。未必只能有一個“文檔類型聲明”與實例相關聯。如果有一個“文檔類型聲明”,那實例就可以解析有或沒有對它的引用。
“完全標記文檔”實例:文檔實例在起始標籤處與一個通用的標識符,再加一個結束標記(尾標記)。
實體限制的相關定義
整體存儲文檔實例
自由引用檔案
外部自由引用檔案
組成
一個典型的文檔可被分成三個層次:文檔類型結構、實例本身和樣式。
“通用標言”主要是處理結構和內容之間的關係,通用標言的文檔是由許多實體(“文檔類型定義”加“通用標言聲明”它們都為離散的文本塊)來組成。
一份“通用標言”文檔可能有三部分組成:
一、“通用標言”聲明:定義字元集分隔設定集和關鍵字(以下在本文裡頭簡稱“聲明”)。
二、文檔類型序言:定義一般實體和元素類型;包含一個“!文檔類型(外語全稱加縮寫:
!DOCTYPE)聲明”與各種“標記聲明”,它們一起組成了一個文檔類型定義(外語
首字母縮略詞:
DTD)。
三、某實例本身:包含一個頂級元素和實例的內容。
標記類型
描述性
描述性標記解放了檔案用於多種用途。並分為結構化描述性標記與名義上的
描述性標記。描述性結構化的標記標識文檔組件和它們的邏輯關係。
程式性
聲明
“概括語法”
指定“通用標言”的標記應如何構建。
“具體語法”
定義這些概括如何被編碼。
“聲明"是由以下八部分組成:
!SGML(本關鍵字開始啟用“聲明”)。
被引用的標準版本。
文檔字元集:來說明文檔的字元集;(漢語名:字元集、外語全稱加縮寫代碼:CHARSET)。
容量集:功能為限制的檔案的最大長度;(漢語名:容量、外語代碼:CAPACITY)。
“具體語法”的作用域:語法作用域適用於文檔實例和文檔序言(文檔序言開頭是<?或<!開頭);(漢語縮寫:域、外語代碼:SCOPE)。
具體語法;(漢語縮寫:語法、外語代碼:SYNTAX)。
“具體語法”其中又包含:
避而遠之的字元:非法字元列表(外語全稱加縮寫代碼:SHUNCHAR)。
“基本字元集”和“描述字元集”:說明語法中使用的字元集( 外語縮寫代碼:BASESET、DESCSET)。
功能:代碼需要對
特殊字元的定義(漢語名:
功能、外語代碼:FUNCTION)。
命名規則:定義元素、屬性和實體名稱時才採用(漢語名:命名、外語代碼:NAMING)。
分隔設定:“短引用”普通標記的分隔設定列表(漢語名:分隔設定、外語縮寫代碼:DELIM)。
保留名:在“文檔類型定義”裡頭使用的一個保留關鍵字列表(漢語名:名、外語代碼:NAMES)。
設定數量:設定元素或者參數的數量(漢語名:數量、外語代碼:QUANTITY)。
七、特點使用:這是一項可選的特性用於修改標記,典型的特點比如“省略標籤”、“短引用”等,接下文中會提到;(漢語名:特點、外語代碼:FEATURES)。
八、套用程式特定信息:特定於某應用程式的信息(用雙引號來描述),“通用標言”解析器要把雙引號裡頭的數據傳遞給某應用程式;(漢語縮寫:程式信息、外語全稱加縮寫代碼:APPINFO)。
範例一:
<!SGML "版本壹" --範例一。-- APPINFO NONE--沒特定的信息。-->
範例二:
<!SGML "ISO 8879:1986" --範例二-- CHARSET BASESET "ISO 646:1991//CHARSET IRV//ESC 2/8 4/2" DESCSET 0 9 UNUSED 9 2 9 --制表、走行(換行)-- 11 2 UNUSED 13 1 13 --回車-- 14 18 UNUSED 32 95 32 127 1 UNUSED CAPACITY SGMLREF TOTALCAP 35000 ENTCAP 35000 ENTCHCAP 35000 ELEMCAP 35000 GRPCAP 35000 EXGRPCAP 35000 EXNMCAP 35000 ATTCAP 35000 ATTCHCAP 35000 AVGRPCAP 35000 NOTCAP 35000 NOTCHCAP 35000 IDCAP 35000 IDREFCAP 35000 MAPCAP 35000 LKSETCAP 35000 LKNMCAP 35000 SCOPE DOCUMENT SYNTAX SHUNCHAR NONE BASESET "ISO 646:1991//CHARSET IRV//ESC 2/8 4/2" DESCSET 0 128 0 FUNCTION RE 13 --回車-- RS 10 --走行(換行)-- SPACE 32 --空間-- TAB SEPCHAR 9 --制表-- NAMING LCNMCHAR "-." UCNMCHAR "-." NAMECASE GENERAL YES ENTITY NO DELIM GENERAL SGMLREF MDO "<!" --各種自定義代碼和對應的實體。-- MDC ">" DSO "[" DSC "]" MSC "]]" COM "--" RNI "#" LIT """ LITA "'" GRPO "(" GRPC ")" AND "&" OR "|" SEQ "," OPT "?" REP "*" PLUS "+" MINUS "-" CRO "&#" ERO "&" PERO "%" REFC ";" 處指 "<?" -- 處理指令開始處。 -- PIC ">" STAGO "<" ETAGO "</" TAGC ">" NET "/" 賦值標記 "=" SHORTREF NONE "&#TAB;" "&#RE;" "&#RS;" "&#RS;B" "&#RS;&#RE;" "&#RS;B&#RE;" "B&#RE;" "&#SPACE;" "BB" """ "#" "%" "'" "(" ")" "*" "+" "," "-" "--" ":" ";" "=" "@" "[" "]" "^" "_" "{" "|" "}" "~" NAMES SGMLREF -- DOCTYPE ELEMENT ANY CDATA (*) RCDATA (*) PCDATA EMPTY (*) O ATTLIST ID IDREF IDREFS ENTITY (*) ENTITIES NOTATION (*) NAME NAMES NMTOKEN NMTOKENS NUTOKEN NUTOKENS NUMBER NUMBERS CDATA (*) FIXED CONREF CURRENT REQUIRED IMPLIED (*) ENTITY (*) DEFAULT STARTTAG ENDTAG MD MS PI CDATA (*) SDATA NDATA SUBDOC SYSTEM PUBLIC (已經標記的部分關鍵字) CDATA (*) RCDATA (*) IGNORE INCLUDE TEMP NOTATION (*) SHORTREF USEMAP EMPTY (*) LINKTYPE SIMPLE IMPLIED (*) LINK INITIAL IDLINK USELINK RESTORE EMPTY (*) POSTLINK (已經命名的字元實體引用) RE RS SPACE -- QUANTITY SGMLREF NAMELEN 8 LITLEN 240 PILEN 240 TAGLEN 960 ATTSPLEN 960 TAGLVL 24 ENTLVL 16 ATTCNT 40 GRPCNT 32 GRPGTCNT 96 GRPLVL 16 BSEQLEN 960 FEATURES MINIMIZE DATATAG NO OMITTAG YES RANK NO SHORTTAG YES LINK SIMPLE NO --“是”需要數目-- IMPLICIT NO EXPLICIT NO --“是”需要數目-- OTHER CONCUR NO SUBDOC NO --“是”需要數目-- FORMAL YES APPINFO NONE --沒特定的程式信息。-->
補充檔案
“補充檔案
”是指
“通用標言
”的
“頭信息
”,優先使用外部的
“通用標言
”標記放在一個輔助輸出檔案;就像AMD的計算機中央處理器裡頭的任務優先權暫存器八號控制暫存器(外語
首字母縮略詞:CR8)來傳遞參數時優先使用
外部中斷。
終端變數
語法:(和現代眾多作業系統都在使用的核心模式、從硬體上支持了虛擬記憶體儲管理和多任務的計算機中央
處理器模式、保護
“其他
”程式段的模式保護模式中的記憶體儲器空間分段邊界單位
顆粒度標記類似,指明
數量,確定數量內容及多與少。)
變數名[生產數量]{定位器}{定位器}
中文百科詞條裡頭的實體{6.2, 296:5}
終端常量
和上述“終端變數”使用同樣的制式,其作用基本等同。
語法
元素語法
實際例子:
<!DOCTYPE 中文百科詞條 PUBLIC "-//中文百科//DTD 中文百科詞條內的示範範例//ZH"> <元素 類型="例子"> 正文具體內容 <附屬元素>附屬元素裡頭的具體內容</附屬元素> 正文具體內容 </元素>
以下必須啟用“聲明”裡頭的相關功能。如果在有些版本的
“通用標言
”裡頭沒有相關的
功能命令(比如沒有“短引用”),那么就不能實現文中所提到的短引用。
短引用
短引用(引用短實體分隔設定)標籤可以被替換為定界符字元串。
“短引用”外語全稱加縮寫代碼:(SHORTREF)。
例如在Creole裡頭它就是借用了“短引用”的概念,它裡頭的標題開始標籤和標題結束標籤都是(==)、加粗標籤都是(**)。
二、短標記
實際例子:
<!DOCTYPE 中文百科詞條 PUBLIC "-//中文百科//DTD 中文百科詞條內的示範範例//ZH"> <元素 類型=示例> 逢二進一<附屬元素> => RTN</> </元素>
一個特點:“自以為是的空標籤”。 例如空結束標記</>在<元素><附屬元素>逢二進一</></元素>裡頭。“繼承”它的值是從最近的完整開始標記起。在本例中,是<附屬元素>(也可以說它會關閉離它最近打開的項目)。這樣的表達是等價於<元素><附屬元素>逢二進一</附屬元素></元素>。外語代碼:(SHORTTAG)。
三、沒得結束標籤
實際例子:
<中文百科詞條> <表示法/公開/</中文百科詞條>
它的結構相當於
<中文百科詞條> <表示法>公開</表示法></中文百科詞條>
外語縮寫:(NET)。
四、話的結尾不打尾標記
如果要利用此功能要將
“聲明
”裡頭的
“省略標籤”處於
“是”的打開狀態。外語代碼(全部):OMITTAG YES;當然再結合文檔類型定義裡頭的“
!元素”表示開始或結束標籤是不是允許被忽略(- -、- O、O O)。“連字元”指示標記是必需的存在的、
外國語O大寫或小寫均可。直譯為中文(- 略、- -、略 略)。而且目標元素在文檔類型定義里沒帶(#必要)外國語#REQUIRED屬性(該屬性表示在文檔實例中必須為目標元素的屬性提供一個值)所以綜合上述被定義的標籤可以明確上下文。
將檔案類型定義裡頭寫如下:
<!DOCTYPE 省略部分示範例子 PUBLIC "-//中文百科//DTD 中文百科詞條內的示範範例//ZH" [ <!ELEMENT 主要說明 - - (小標題, 標記+)> <!ELEMENT 小標題 o o (#PCDATA) --已解析的字元數據--> <!ELEMENT 標記 - o (其他內容弌*)> <!ELEMENT 其他內容弌 - O (#PCDATA) --已解析的字元數據--> ] >
那么則表示為如下所述:
<主要說明> <!--小標題前後項已經被上述規則躲避。--> <標記>蓋章打標記 <標記>蓋章打標記 <其他內容弌>…… </主要說明>
注意,若像這樣:
加個與
“省略標籤”不相關的
“空”(外語代碼:EMPTY)時(其聲明它的內容是
“空”的),而且結束標記被忽略,那么在
“通用標言
”裡頭此句話就是一條無效標記。在這方面語法不同於
可擴展標記語言裡頭的“
空”元素。
注釋語法
以下一、二、注釋的效果同高級程式語言C語言注釋一樣,利用開始標記/*和結束標記*/來進行多行注釋。
<!--該注釋內容可以放在一個文檔的任何地方。-->
使用“注釋”聲明。放在標記裡頭:<!關鍵字 各種參數 --注釋內容可以放在標記裡頭的。--各種參數 >
比如:
<!DOCTYPE 中文百科_注釋示範範例 PUBLIC "-//中文百科//DTD 中文百科詞條內的示範範例//ZH" [ <!--文檔類型定義實際上並非非常重要的--> <!ELEMENT 文檔 - - (前面, 體)> <!ATTLIST 文檔 標識符 ID #REQUIRED> <!ELEMENT 前面 - - (標題) --前面是元信息--> <!ELEMENT 標題 - - (#PCDATA)--被解析的字元數據--> <!ELEMENT 體 - - (段+)> <!ELEMENT 段 - - (#PCDATA)--被解析的字元數據--> ] ><文檔 標識符="中文百科示範例子"> <前面> <標題>範例標題<!-- 一個範例檔案的示範標題--></標題> <體> <段>忽逢桃花林,夾岸數百步,中無雜樹,芳草鮮美,落英繽紛。</段> <段>其中往來種作,男女衣著,悉如外人。</段> <段>林盡水源,便得一山,山有小口,仿佛若有光。</段> </體></文檔>
三、空注釋,建設<!>是被忽略的,可用於各種不同的目的(比如機器指令中無或隱含運算元的
零地址指令用於其它的目的)。
其它語法特點
“短標記”、“空結束標記啟用(外語全稱加縮寫:NETENABL)”、“即時空結束標記(外語全稱加縮寫:IMMEDNET)”,特性允許縮短標籤但需圍繞一個空的文本值,但禁止縮短完整的標籤:
<表示法></表示法>可以寫為:<表示法//
其中,第一個斜槓代表“空結束標記啟用的關閉開始標記”;第二個斜槓代表空結束標記。
注意:
可擴展標記語言定義“空結束標記啟用的
關閉開始標記”需帶一個
/(左斜槓),“空結束標記”需帶一個
>(尖括弧)。因此同等的結構在可擴展標記語言裡頭則顯示為<表示法/>。
文本在同一行之上:
允許一個標記項目不需尾標記在行結束(特別適用於標題等)。當然需要最小化標籤無論是“短引用”或“數據標記”。
然後第三個特徵是,在同一行上的文本: 要么使用“短引用”(
外國語縮寫代碼SHORTREF)或“數據標籤”(外語代碼DATATAG)來達到最小化的目的:
<!ELEMENT 多行 (排*) <!ELEMENT 排 O - (#PCDATA)--被解析的字元數據--> <!ENTITY 行標籤 "</排>"> <!SHORTREF 一行 "&#引;&#短;" 行標籤> <!USEMAP 一行 排>
在具體的的語法裡頭,&#引;&#短;是一個“短參考”分隔設定。
等同於:
<多行> <排>第一行</排> <排>第二行</排></多行>
標記文檔時使用多個“並發”(縮寫外語代碼CONCUR、外語全稱:CONCURrent)的文檔類型定義。
“嵌入檔案”在編碼時使用一個備選文檔結構(漢語名:子文檔、縮寫外語代碼SUBDOC、外語全稱:SUBDOCuments)。
在不同的文檔類型定義裡頭創建自動可處理的連結之間的結構(漢語名:連結、外語全稱代碼:LINK;其下還包含:“簡單連結”、“顯式連結”、“隱式連結”)。
定義
本國際標準(“通用標言”)套用以下定義:
基文檔元素
基礎檔案類型
標準體系
第一層次是元語言標準——“通用標言”標準;
第二層次是
基礎標準,如:文檔樣式語義與規範語言標準(外語首字母縮寫詞:DSSSL)等,是該體系的基本標準;
第三層次是具體套用標準,如:
超文本標記語言等標準。也就是說,在
可擴展標記語言標準出現之前,
“通用標言
”標準已經形成了完善的體系,並有許多建立於其上的套用系統與套用標準。如下圖所示。
相關
派生
可擴展標記語言(很多檔案使用它來描述,它是一種使用
“通用標言
”原理的數據描述語言、與
“通用標言
”相比,它的規範不到
“通用標言
”規範的十分之一,相當於
“通用標言
”的濃縮方式。)
部分相關
和“通用標言”部分相關其他的不能解析或驗證,例如用於排版和文檔寫作的Z格式標記語言;
標籤為原始標記類型,例如Scala程式設計語言。
實際套用
以下簡要說明“通用標言”的結構化信息處理與數據交換在一般行業的套用:
超級媒體時基結構化語言(外語全稱加縮寫:HyTime);
在出版界美國出版商協會(外語
首字母縮略詞:AAP)主持了
“Electronic Manuscript Project
”,該計畫按
“通用標言
”的格式處理電子文獻,設計了三種不同的文檔類型定義,即文章、圖書和連續出版物;
在政府領域裡頭,
“計算機輔助採購和後勤支持
”是美國國防部實施的計畫、美國
國稅局的IRS檔案;
在學術界和研究團體,“文本編碼方案”以“通用標言”為基礎來發展出一系列的文獻類型以及編碼方法;
有人為美國國會圖書館機讀目錄通信格式(外語首字母縮略詞:USMARC)設計了專用的文檔類型定義,使用“通用標言”的形式描述“機讀目錄”記錄;
標準音樂描述語言;
互動式文檔的圖元檔案;
超級-G文本格式;
ISO 12083;
IBM信息開發文檔類型;
EWS-MAJOUR;
FOSIs and DTDs related to MIL-STD-2167A;
美國證券交易委員會的EDGAR資料庫報表系統;
格式化輸出規格的實例;
主題導航地圖;
政府信息搜尋技術(加拿大)(外語:Government Information Finder Technology);
英國電子政務互操作框架;
“美國航空運輸協會”(外語:Air Transport Association of America)的文檔類型定義;
牛津英語詞典(第二版牛津英語詞典的電子版基於
“通用標言
”)。