複製鏈接
請複製以下鏈接發送給好友

標記語言

鎖定
標記語言,是一種將文本以及文本相關的其他信息結合起來,展現出關於文檔結構和數據處理細節的電腦文字編碼。與文本相關的其他信息(包括文本的結構和表示信息等)與原來的文本結合在一起,但是使用標記進行標識。
標記語言不僅僅是一種語言,就像許多語言一樣,它需要一個運行時環境,使其有用。提供運行時環境的元素稱為用户代理
中文名
標記語言
外文名
Markup Language
其他稱呼
置標語言、標誌語言、標識語言
外國語縮寫
XML

標記語言主要類型

標記語言通常可以分為三類:標識性的、過程性的以及描述性的。 [1] 
標識性置標語言
標識性置標語言 (外語:Presentational markup)是在編碼過程中,標記文檔的結構信息。例如,在文本文件中, 文件的標題可能需要用特定的格式表示(居中,放大等),這樣我們就需要標記文件的標題。字處理以及桌面出版產品有時候能夠自動推斷出這類的結構信息,但是絕大多數的,像Wiki這樣的純文本編輯器還不能解決這個問題。
過程性標識
過程性置標語言(外語:Procedural markup) 一般用於文字的表達,通常對於文本編輯者可見,並且被軟件依其出現順序依次解讀 。 為了格式化標題,在標題文本之前,緊接着插入一系列的格式標識符,指示計算機轉換到居中的顯示模式,同時加大及加粗字體。在標題文本之後,會緊接綴上格式中止標識; 對於更高級的系統宏命令或者堆棧模式會讓這一過程的實現方式更加豐富 。大多數情況下, 過程性置標能力包含有一個Turing-complete編程語言。 過程性置標語言的範例有:nroff, troff, TeX, Lout 以及 PostScript. 過程性置標語言被廣泛應用在專業出版領域, 專業的出版商會根據要求使用不同的置標語言以達到出版要求.
描述性標記
描述性的標記——有時被稱為邏輯標記或概念上的標記,鼓勵作者編寫的方式描述概念上,而非視覺上。 [2] 
歷史
置標這個詞來源自傳統出版業的“標記”一個手稿,也就是在原稿的邊緣加註一些符號來指示打印上的要求。 長久以來,這個工作都是由專門的標記人(外語:markup men )或複製標記(外語全稱:copy markers [3]  )以及校對人來進行,對原稿標誌出使用什麼樣的字體,字型以及字號,然後再將原稿交給其他人進行手工的排版工作。
TeX是一個由美國電腦教授高德納(Donald E. Knuth)編寫的功能強大的排版軟件。它在學術界十分流行,特別是數學、物理學和計算機科學界。TeX被普遍認為是一個很好的排版工具,特別是在處理複雜的數學公式時。利用諸如是LaTeX等終端軟件,TeX就能夠排版出精美的文本。
  • 標準通用標記語言
標準通用標記語言是一種專門的置標語言,被用作編寫《牛津英語詞典》的電子版本。由於它的複雜,導致難以普及。
超文本標記語言(標準通用標記語言下的一個應用、外語縮寫:HTML)是為網頁創建和其它可在網頁瀏覽器中看到的信息設計的一種標記語言。
可擴展標記語言(標準通用標記語言下的一個子集、外語縮寫:XML),又稱可擴展置標語言,是一種標記語言。置標指電腦所能理解的信息符號,通過此種標記,電腦之間可以處理包含各種信息的文章等。
可延伸超文件標記語言(外語全稱:Extensible HyperText Markup Language、外語縮寫:XHTML),是一種標記語言,表現方式與超文本標記語言類似,不過語法上更加嚴格。
還有其他一些基於可擴展標記語言的應用,比如RDFXFormsDocBookSOAP以及網絡本體語言(外語縮寫:OWL)。

標記語言歷史發展

標記語言,用一系列約定好的標記來對電子文檔進行標記,以實現對電子文檔的語義、結構、及格式的定義。這些標記必須很容易的和內容區分,並且易於識別。標記語言的發展如下:
當今廣泛使用的置標語言是超文本標記語言可擴展標記語言。置標語言廣泛應用於網頁和網絡應用程序。標記最早用於出版業,是作者、編輯以及出版商之間用於描述出版作品的排版格式所使用的。
一、為了促進數據交換和操作,在20世紀60年代,通過IBM公司研究人員的傑出工作,得出了重要的結論:要提高系統的移植性,必須採用一種通用的文檔格式,這種文檔的格式必須遵守特定的規則。這也就是創建通用標記語言的指導原則,從人們所產生的將文件結構化為標準的格式的動機出發,IBM創建了通用標記語言。
二、在標記語言的概念達成共識的基礎上,IBM公司的研究人員Charles Goldfarb帶領的開發團隊完善着通用標記語言,將其稱為標準通用標記語言,標準通用標記語言成為了IBM內部格式化和維護合法化文件的手段。後來被拓展和修改,作為一種全面的信息標準以適應工業範圍的廣泛應用,1986年,標準通用標記語言被國際標準化組織(ISO)所採納。
他的功能非常強大,但是非常複雜,需要許多昂貴的軟件配合運行,因此在很長一段時間內沒有被推廣。
三、1989年,歐洲粒子物理實驗室(CERT)的研究員Tim Berners-Lee和Anders Berglund共同創建了一種基於標記的語言HTML,他可看做標準通用標記語言的簡單應用,開始時僅僅提供一種對靜態文本的信息顯示的方法,後來越來越多的標籤產生,兩大瀏覽器廠商微軟和網景格式,甚至創建了自己的產品的兼容標籤,使HTML變得臃腫不堪,兼容性不好。
四、1996年人們開始致力於描述一個新的標記語言,它是一種在WEB中應用標準通用標記語言的靈活性和強大功能的方法,萬維網聯盟--領導萬維網,制定其公共的協議,促進萬維網的發展並確保其互操作性的國際組織)專門成立了專家小組以從事這項工作。1998.2,w3c批准了XML1.0規範。可擴展標記語言具備標準通用標記語言的核心特性,但簡潔,他的內容甚至不到標準通用標記語言的十分之一。

標記語言其他應用

XAML(ExtensibleApplicationMarkupLanguage),基於XML語言,在微軟WPF(WindowsPresentationFoundation)中使用。
XAML提供了一種便於擴展和定位的語法來定義和程序邏輯分離的用户界面,而這種實現方式和ASP.NET中的"代碼後置"模型非常類似。XAML是一種解析性的語言,儘管它也可以被編譯。它的優點是簡化編程式上的用户創建過程,應用時要添加代碼等。
用文本編輯器打開一個XAML文件,會發現一個XAML文件只有一個元素作為根,這個根是應用程序整個運行時的對象圖。在這個根下,可以採用3種方式來聲明對象以構建一個有意義的XAML文件。接下來介紹一下XAML文件的結構和對象:
1.直接使用對象元素語法
如果objectName是一個需要實例化的類型名稱,那麼可以用如下代碼創建對象:
<objectName>
</objectName>
一般一個對象還包括其他對象,那麼可以這樣表示:
<objectName>
<otherobjectName>
</otherobjectName>
</objectName>
為了方便,也可以省略成如下形式:
<objectName>
<otherobjectName/>
</objectName>
2.使用屬性語法設置屬性
如果objectName是要實例化的對象,propertyName是要設置的屬性名稱,propertyValue是要設置的屬性的值。那麼應該使用的代碼如下所示:
<objectName propertyName="propertyValue".../>
或者:
<objectName propertyName="propertyValue">
...<-element children-->
</objectName>
3.標記擴展
標記擴展是一個XAML屬性語法,採用花括號({和})表示標記擴展。此方法可以講屬性值不僅僅看做一段字符或者文本,分析器會調用適用該特定標記擴展的代碼,從而在標記中構造對象。
這種方法被廣泛用於數據綁定上,比如:
<Grid x>:Name="LayoutRoot"Background="White">
<ComboBox ItemsSource="{Binding ElementName=LayoutRoot}"/>
</Grid>
以上代碼將ComboBox的Itemssource屬性的值綁定為Layoutroot。 [4] 
參考資料