YAML,是一個(gè)可讀性高,用來(lái)表達資料序列的編程語(yǔ)言。YAML參考了其他多種語(yǔ)言,包括:XML、C語(yǔ)言、Python、Perl以及電子郵件格式。目YAML是”YAML Ain’t a Markup Language”(YAML不是一種置標語(yǔ)言)的遞歸縮寫(xiě)。在開(kāi)發(fā)的這種語(yǔ)言時(shí),YAML 的意思其實(shí)是:”Yet Another Markup Language”(仍是一種置標語(yǔ)言),但為了強調這種語(yǔ)言以數據做為中心,而不是以置標語(yǔ)言為重點(diǎn),而用返璞詞重新命名。
YAML的功能
YAML的語(yǔ)法和其他高階語(yǔ)言類(lèi)似,并且可以簡(jiǎn)單表達清單、雜湊表,標量等資料形態(tài)。它使用空白符號縮排和大量依賴(lài)外觀(guān)的特色,特別適合用來(lái)表達或編輯數據結構、各種設定檔、傾印除錯內容、文件大綱(例如:許多電子郵件標題格式和YAML非常接近)。盡管它比較適合用來(lái)表達階層式(hierarchical model)的數據結構,不過(guò)也有精致的語(yǔ)法可以表示關(guān)聯(lián)性(relational model)的資料。由于YAML使用空白字符和分行來(lái)分隔資料,使的他特別適合用grep/Python/Perl/Ruby操作。其讓人最容易上手的特色是巧妙避開(kāi)各種封閉符號,如:引號、各種括號等,這些符號在巢狀結構時(shí)會(huì )變得復雜而難以辨認。
為什么不使用XML?
上面5條也就是XML不足的地方。同時(shí),YAML也有XML的下列優(yōu)點(diǎn):
總之,YAML試圖用一種比XML更敏捷的方式,來(lái)完成XML所完成的任務(wù)。
為什么不使用JSON ?
JSON的語(yǔ)法是YAML1.2版的子集,,同時(shí)非常接近YAML1.0與1.1版的子集,因此大部分的JSON文件都可以被YAML的剖析器剖析。這是因為JSON的語(yǔ)法結構和YAML的內置格式相同。雖然大范圍的分層也可以使用類(lèi)似JSON的內置格式,不過(guò)這并YAML標準并不建議這樣使用,除非這樣編寫(xiě)能讓文件可讀性增加。YAML的許多擴展在JSON是找不到的,如:進(jìn)階資料形態(tài)、關(guān)系錨點(diǎn)、字串不需要雙引號、映射資料形態(tài)會(huì )儲存鍵值的順序。
YAML的語(yǔ)法要求
在yaml.org(英文)可以找到輕巧而好用的小抄(亦是用YAML表示)及格式說(shuō)明。下面的內容,是關(guān)于基本元件的摘要。
YAML再使用逗號及冒號時(shí),后面都必須接一個(gè)空白字符,所以可以再字串或數值中自由加入分隔符號(例如:5,280或http://www.wikipedia.org)而不需要使用引號。
另外還有兩個(gè)特殊符號在YAML中被保留,有可能在未來(lái)的版本被使用–( @ )和( ` )。
YAML的適用范圍
由于實(shí)現簡(jiǎn)單,解析成本很低,YAML特別適合在腳本語(yǔ)言中使用。列一下現有的語(yǔ)言實(shí)現:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是腳本語(yǔ)言.
YAML比較適合做序列化。因為它是宿主語(yǔ)言數據類(lèi)型直轉的。
YAML做配置文件也不錯。比如Ruby on Rails的配置就選用的YAML。對ROR而言,這很自然,也很省事.
由于兼容性問(wèn)題,不同語(yǔ)言間的數據流轉建議現在不要用YAML.
YAML存在的意義
無(wú)論多么完美的事物,都需要有對立面,有說(shuō)“NO”的聲音。XML也不例外。當然,站在主流的對立面,需要勇氣和智慧。
YAML和XML不同,沒(méi)有自己的數據類(lèi)型的定義,而是使用實(shí)現語(yǔ)言的數據類(lèi)型。這一點(diǎn),有可能是出奇制勝的地方,也可能是一個(gè)敗筆。如果兼容性保證的不好的話(huà),YAML數據在不同語(yǔ)言間流轉會(huì )有問(wèn)題。如果兼容性好的話(huà),YAML就會(huì )成為不同語(yǔ)言間數據流通的橋梁。建議yaml.org設立兼容認證機制,每個(gè)語(yǔ)言的實(shí)現必須通過(guò)認證。
假如兼容性沒(méi)問(wèn)題的話(huà),YAML就太完美了。輕巧,敏捷,高效,簡(jiǎn)便,通用。這才是理想中的數據模型。當然就現在而言,這還只是個(gè)理想。
常用YAML函式庫
Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網(wǎng)站地圖 百度網(wǎng)站地圖 網(wǎng)站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752
法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明