佛教圖書館館訊 第二十四期 89年12月

標記語言的應用

中華佛學研究所、佛學網路資訊室資訊組組長 周邦信


【摘要】:中華電子佛典協會(CBETA)使用XML作為佛典電子檔的標記語言,並採用國際規範TEI作為基礎標籤集,再依實務標記作業經驗,修訂或新增標籤,建立適用於漢文電子佛典的標籤集。

  在輸入、校對階段,CBETA設計了一套簡單標記系統,使用約三十個簡單標記,方便輸入、校對組的作業人員,不必學習XML就可以進行基礎標記。校對階段結束後,再使用自行開發的轉檔程式將簡單標記轉為XML標記。

  CBETA電子佛典XML標籤集,目前使用約六十餘個標籤,文中分檔頭(Header)、本文(Body)兩大類,摘要、舉例介紹各標籤。

  標記作業中,CBETA使用UltraEdit(r)作為編輯器,使用CVS作為版本管理系統,使用Perl開發各種作業輔助工具、轉檔程式。

關鍵詞:CBETA;電子佛典;標記;簡單標記;XML;TEI;標籤集


壹、標記語言

一、什麼是「標記」?

  標記(Markup)是在稿件或文章上加上的記號,以記錄各種不同的資訊。

  標記主要可分為兩大類,一類是關於「排版或顯示格式」的標記,另一類則是關於「資料結構或內容」的標記。

  例如大家最熟悉的標記語言HTML,可能會有如下的用法:

  佛教資料電子化技術探討--以< b >中華電子佛典協會< /b >為例

  在這堙A< b >……< /b >表示「中華電子佛典協會」這些字要加粗體字顯示,這是第一類關於「格式」的標記。

  而電子佛典的製作,關於「內容」的標記則更為重要,例如:

  長阿含經序
  < byline type="Author" >長安釋僧肇述< /byline >
  夫宗極絕於稱謂。賢聖以之沖默。玄旨非言

  這堛< byline >標記標出了經文中的作者行,相對的,它並未指定這個作者行要如何顯示。這種將「顯示格式」與「內容」分離的做法,在後面介紹電子佛典的發行時我們將會瞭解它的好處。最重要的是,這種「內容標記」是讓電腦「看懂」經文的第一步。

二、SGML→HTML→XML

  前面說「標記是在稿件或文章上加上的記號」,聽起來是充滿了無比的彈性,那麼我用螢光筆在書本上畫重點,算不算是「標記」呢?應該算是,那麼,你用你的標記,我用我的標記,各自運用想像力與創造力建立自己的標記系統,這樣彼此之間也算是相安無事,但要交換資訊就有困難了。於是「標記語言」就應運而生了。

  SGML(Standard Generalized Markup Language,標準通用標記語言)是早在1986年就建立的國際標準,其中定義了如何描述一組標記標籤的規則,但由於它相當的複雜,因此應用並不十分普遍。

  接下來是紅遍半邊天的HTML(Hypertext Markup Language),HTML是SGML的一種應用,以其簡單易用的語法隨著網際網路的興起而盛行,世界各地不同語言、文化、電腦作業平台之間,得以藉由HTML這個標準的共通語言相互溝通,地球村的資訊交流達到前所未有的迅速與廣度。

  然而HTML的缺點--正是它的優點--也漸漸的浮現,HTML不再能滿足網際網路上許多新興的需求。SGML夠強卻太複雜,HTML夠簡單卻不夠強,感謝標記語言的專家們,又為我們設計了一套又強、又不太難、又適用於網際網路的標記語言--XML(eXtensible Markup Language),讓我們能順利地為電子佛典標記。

三、電子佛典為什麼要使用標記?

  為什麼電子佛典要使用標記呢?這得先回頭想想,我們為什麼要製作電子佛典?主要目的應該是要利用資訊科技、電子媒體的便利性,使藏經易於保存、複製、傳播、編輯再製……等等。所以,很自然的,第一步我們將紙面的經文輸入或掃描成電子檔,這個階段完成後,我們已經可以開始享受到電子媒體的便利性。

  然而,從紙本到電子檔的過程中,許多保存在紙本中的資訊,到了電子檔堳o失去了。例如,《大正藏》以許多不同的編排格式來告訴我們,這堿O經名、這堿O譯者、作者、這堿O品名、這堿O偈頌、這堿O附文、這埵陵桹氶A可是這些資訊在電子檔堣ㄣ_存在,大正藏編輯委員會的許多心血在這個數位化的過程中流失了。

  如果我們使用標記,忠實的記錄《大正藏》中的各種資訊,編輯經驗得以傳承,電腦也更能理解經文電子檔中各個部分的關係、屬性,資訊科技因而可以為我們提供更多使用電子佛典的輔助工具。

四、為什麼要使用XML?

  CBETA早期也使用SGML來做電子佛典的標記,隨著標記語言的發展,XML已成為最佳的選擇,原因如下:

1. XML是W3C通過的國際標準。
2. XML去除了SGML的複雜性,有愈來愈多的工具軟體支援。
3. XML適合於Internet上使用,例如IE5便已直接支援XML。
4. 目前臺灣中文文獻處理計畫的標記作業大都採用XML。

五、為什麼用TEI?

  相較於HTML,XML最大的一個優點就是它可以自訂標籤(Tag)。因此,各個不同的XML應用可以按照各自特殊的需求訂定新的標籤,這在HTML的功能限制上是一大突破。然而,再一次我們又隱約看到了「資訊交換」的問題。由於有了共同的標記語言XML,大家所使用的標記格式都一樣,我們可以用同樣的標記語言、標記格式來定義各自不同的標籤名稱,例如我們要標出一個段落,可以有如下數種不同的標法:

● < p >......< /p >
● < para >......< /para >
● < 段落 >......< /段落 >

  這些都是符合XML標準的標記,但明明同樣指的是一個段落,卻可以有不同的標法,這在資訊交換上將會造成問題,至少要增加一道標記轉換的手續。然而,如果大家對於共同的標記,能有一套可以依循的標準,比如大家都以< p >......< /p >來標示段落,這個問題就可以解決。

  早在SGML時代就有一個TEI(Text Encoding Initiative)專案,他們研究了各種不同西方文獻,整理出一套標籤集(Tag Set),希望獲得大家採用而促進電子文獻的分享交流。

  雖然TEI不見得適用於中文文獻,更不見得適用佛教典籍,不過它的標籤集堣揭陶\多是屬於各種文獻所共有的,可以與電子佛典共用的標記。

  因此,CBETA在建立自己的標記系統時採取這樣的策略:

1. TEI已有定義而能適用的,採取TEI
2. TEI埵部A但對屬性等稍作修改
3. TEI堥S有的,通常是屬於中文文獻或佛典所特有的情況,我們才自訂新標籤

  如此,藉由共同標準的採用,在國際上各個不同電子佛典製作團體之間的成果才得以分享、交換。

貳、簡單標記

  在進入正式的XML標記之前,CBETA校對組會提供一個稱為「簡單標記版」的經文電子檔給研發組,內容格式如下:

T46n1911_p0001a01_## T46n1911_p0001a02N##鑞o. 1911 [cf. No. 1912] T46n1911_p0001a03J##鱍01]摩訶止觀卷第一[02](上) T46n1911_p0001a04_## T46n1911_p0001a05A##禷忖悒x智者大師說 T46n1911_p0001a06B##曭糷H灌頂記 T46n1911_p0001a07P##齯醢[明靜。前代未聞。智者。大隋開皇十四年

  從這個範例中我們可以看到:經號(N)、卷名(J)、作者行(A)、段落(P)等基本標記都已標出,提供了標記作業的基礎。

  目前所使用的簡單標記如下表:(見表1)

【表1】簡單標記表
A 著者 j 經卷(結束) 行中偈頌
B 譯著者(Byline) K T 不規則偈頌(起始)
C 收集者(Collector) N 經號 t 不規則偈頌(結束)
D P 段落 行中不規則偈頌
行中品名 行中小段落 V
E 編輯者(Editor) Q 其它標題 W 附文
F 表格 q 不降格的"會"、"分"、
"小經"等標題
X
G 圖形 行中其它標題 Y 譯者
H 悉曇字 S 偈頌(起始) Z 咒語
J 經卷(起始) s 偈頌(結束) 行中咒語

  然後研發組使用自行撰寫的轉檔程式,將「簡單標記版」轉為「XML版」,流程如右圖。(見圖1)

【圖1】簡單標記版=>XML版轉檔流程圖



參、CBETA XML標籤集

  接下來進入本文的重點,介紹CBETA電子佛典目前所使用的標記。

  我們先看XML經文檔的整個架構:

< ?xml version="1.0" encoding="big5" ? >
< ?xml:stylesheet type="text/xsl" href="../dtd/ cbeta.xsl" ? >
< !DOCTYPE tei.2 SYSTEM "../dtd/cbetaxml.dtd " >
< tei.2 >
 < teiHeader >……< /teiHeader >
 < text >
  < body >……< /body >
 < /text >
< /tei.2 >

  從上面可以看出整個檔案的架構可以分為檔頭(Header)、本文(Body)兩部分,以下便依檔頭、本文兩大類介紹CBETA目前所使用的標記:

一、檔頭(Header)

  檔頭標籤集分成以下三類:

1. File Description本電子檔書目資訊描述

  檔案描述所使用到的標記如下表:(見表2)

【表2】檔頭相關標記
標籤名稱 英文說明 中文說明
< fileDesc > file description 檔案描述
< titleStmt > title statement 標題陳述
< respStmt > statement of responsibility 關於負責人的陳述
< resp >   關於負責性質的描述片語,
例如某人「編譯」
< editionStmt > edition statement 版本陳述
< edition > Edition 版本
< publicationStmt > publication statement 出版發行陳述
< distributor >   出版者
< availability >   使用限制、版權聲明
< sourceDesc > source description 本電子檔所依據的來源說明

  範例:

< fileDesc >
 < titleStmt >

  < title >Taisho Tripitaka, Electronic version, No. 001 長阿含經< /title >
  < respStmt >
   < resp >Electronic Version by< /resp >
   < name >CBETA< /name >
  < /respStmt >
 < /titleStmt >
 < editionStmt >

  < edition >Version 1.0 (Big5)< date >1999/12/10< /date >< /edition >
 < /editionStmt >
 < publicationStmt >

  < distributor >
   < name >中華電子佛典協會(CBETA)< /name >
   < address >
    < addrLine >cbeta@ccbs.ntu.edu.tw< /addrLine >
   < /address >
  < /distributor >
  < availability >
   < p >Available for non-commercial use
   when distributed with this header intact.< /p >
  < /availability >
  < date >< /date >
 < /publicationStmt >
 < sourceDesc >

  < bibl >Taisho Tripitaka Vol. 1, No. 001 &desc;< /bibl >
 < /sourceDesc >
< /fileDesc >


2. Encoding Description電子版與來源間的關係描述

  範例:

< encodingDesc >
 < projectDesc >
  < p lang="en" type="ly" >Text as provided by Mr. Hsiao Chen-Kuo,
       Text as provided by Mr. Chang Wen-Ming,
       Text as provided by Anonymous, USA< /p >
  < p lang="zh" type="ly" >蕭鎮國大德提供,張文明大德提供,北美某大德提供< /p >
 < /projectDesc >
< /encodingDesc >

3. Revision Description修訂摘要記錄

< revisionDesc >
 < change >
  < date >19990810/22:31:27< /date >
  < respStmt >< name >CW< /name >< resp >ed.< /resp >< /respStmt >
  < item >Created initial TEI XML version with BASICX.BAT (99/8/10)< /item >
 < /change >
< /revisionDesc >

二、本文(Body)

1. 最上層結構標籤集

  < div1 >……< div7 >是本文最外層的結構描述標記,相當於一般書藉的篇、章、節、項、目等等,例如《瑜伽師地論》標記如下:

< text >< body >
< div1 type="fen" n="1" >
 瑜伽師地論卷第一
 < byline type="Author" >彌勒菩薩說< /byline >
 < head >本地分< /head >
 < div2 type="di" n="1" >< head >五識身相應地< /head >
  < div3 type="zhang" n="1" >< head >十七地總說< /head >
  ……
  < /div3 >
  ……
 < /div2 >
 ……
< /div1 >
< /body >< /text >

2. Paragraph Level段落層標籤集

(1) < p > 段落

  範例:T02, No. 99, p. 1

< p >如是我聞< /p >
< p type="inline" >一時。佛住舍衛國祇樹給孤獨園< /p >
< p type="inline" >爾時。世尊告諸比丘。當觀色無常。如是觀者。則為正觀。正觀者。則生厭離。厭離者。喜貪盡。喜貪盡者。說心解脫< /p >
< p type="inline" >如是觀受.想.行.識無常。如是觀者。則為正觀。正觀者。則生厭離。厭離者。喜貪盡。喜貪盡者。說心解脫< /p >
< p type="inline" >如是。比丘。心解脫者。若欲自證。則能自證。我生已盡。梵行已立。所作已作。自知不受後有。如觀無常。苦.空.非我亦復如是< /p >
< p type="inline" >時。諸比丘聞佛所說。歡喜奉行< /p >

  如上type="inline"是原本《大正藏》未分段,CBETA進一步細分的段落,如此在經文呈現時,可以選擇依《大正藏》原來的段落編排,或是可以有更易閱讀的段落編排。另外還有< p type="dharani" >則是咒語段落。

(2) < list > 列表

  範例:T46, No. 1912, p. 207b

< list >
< item >欲貪欲生< /item >
< item >欲貪欲不生< /item >
< item >欲貪欲亦生亦不生< /item >
< item >欲貪欲非生非不生< /item >
< /list >

(3) < lg > 偈頌

  範例:

< lg >
 < l >一切有為法< /l >< l >如夢幻泡影< /l >
 < l >如露亦如電< /l >< l >應作如是觀< /l >
< /lg >

3. Phrase Level片語層

(1) < corr > 勘誤

  CBETA的編輯原則是以《大正藏》為準,但遇到《大正藏》有明顯的錯誤,我們也會做勘誤,標記如下:

  T02, No. 99, p. 8, c6

佛說此經< corr sic="己" >< /corr >

(2) < fan > 反切

  範例:T10, No. 279, p. 418, a20

< fan >
 < zi >< /zi >
 < yin >都我切< /yin >
< /fan >

(3) < note > 夾註

  範例:T02, No. 103, p. 500, a04

佛說聖法印經< note type="inline" >天竺名阿遮曇摩文圖< /note >

(4) < skgloss > 梵漢對照

  範例:

< skgloss >
 < gloss >Saddharmapundarika sutra.< /gloss >
 < term >妙法蓮華經< /term >
< /skgloss >

(5) < tt > 悉曇字

  如右圖是《大正藏》第18冊83頁中欄的悉曇字,標記如下:

< tt type="inline" >
 < t lang="sk-sd" >&SD-CFC5;< /t >
 < t lang="zh" >< /t >
< /tt >字門一切諸法本不生故。

4. Milestone tags 里程碑相關標籤

(1) < milestone > 里程碑

< milestone unit="juan" n="1"/ >
……
佛說長阿含經卷第一
……
< milestone unit="juan" n="2"/ >佛說長阿含經卷第二
……

(2) < juan > 卷

< juan fun="open" n="001" >
 < jhead >
  < title >佛說長阿含經< /title >卷第一
 < /jhead >
< /juan >

(3) < pb > 頁碼

  如下所示是《大正藏》第2冊第1頁的上欄、中欄。

< pb ed="T" id="T02.0099.0001a" n="0001a"/ >
No. 99
雜阿含經卷第一
宋天竺三藏求那跋陀羅譯

……
< pb ed="T" id="T02.0099.0001b" n="0001b"/ >
……

(4) < lb > 行號

< lb n="0001a01"/ >
< lb n="0001a02"/ >No. 99 < lb n="0001a03"/ >雜阿含經卷第一
< lb n="0001a04"/ >
< lb n="0001a05"/ >宋天竺三藏求那跋陀羅譯
< lb n="0001a06"/ >(一)如是我聞一時。佛住舍衛國祇樹給孤
< lb n="0001a07"/ >獨園爾時。世尊告諸比丘。當觀色無常。如

(5) < mulu > 目錄

  《大正藏》之中,尤其是一些大部頭的經典,雖然也有許多目錄資訊,但並不完整。如果有完整的目錄,甚至科判資訊,我們在HTMLHelp版便可以提供很方便的樹狀結構讀經介面,因此我們加了一個CBETA自訂的標籤

  例如《瑜伽師地論》標記如下:

< mulu type="" level="1" n="1" label="1 本地分"/ >本地分中五識身相應地第一
< mulu type="" level="2" n="1" label="1 五識身相應地"/ >
< mulu type="" level="3" n="1" label="1章 十七地總說"/ >
……
< mulu type="" level="3" n="2" label="2章 五識身地總說"/ >
……

5. 校勘

< app > 校勘

  《大正藏》的校勘記錄了非常豐富、寶貴的資訊,我們將這些資訊記錄在 < app > 堙A例如T8, No. 235, p. 748, c19 第26個校勘:

《大正藏》作:姚秦天竺三藏鳩摩羅什譯

宮本作:姚秦三藏法師鳩摩羅什譯

  標記如下:

姚秦
< app n="074826" >
 < lem >天竺三藏< /lem >
 < rdg wit="【宮】" >三藏法師< /rdg >
< /app >鳩摩羅什譯

6. Graphics圖形

< figure > 插圖

  範例:T18, p. 178

< !ENTITY FigT18017801 SYSTEM "figures/ 18000101.gif" >
……
< lb n="0178a10"/ >< figure entity=" FigT18017801" >< /figure >

肆、軟體工具

  接下來介紹一些我們在標記編輯過程中所使用的工具軟體。

一、標記修訂:UltraEdit

  UltraEdit(r)(註1)是一個相當好用的純文字編輯器,我們使用它來編輯XML經文檔,並在UltraEdit堻]定呼叫XML Parser(註2),讓我們隨時可以做XML語法檢查,方便尋找、修正錯誤。

二、版本維護:CVS

  CBETA校對組致力於提昇經文的正確度,不遺餘力,進入標記階段後,我們當然不希望任何人工編輯的失誤降低了經文的正確度,因此我們採用了CVS(Concurrent Versions System)(註3)這套免費的版本管理軟體,它允許多人同時編輯,並有完整的修訂歷史記錄,幫助我們提昇CBETA的經文品質。

三、成果輸出

  前面我們提到,「顯示格式」與「內容」分離處理的好處,現在就顯現出來了。有了基礎的XML經文檔,便可以運用各轉檔程式產生各種不同格式的經文檔,滿足使用者的各種不同需求。例如在Normal、App這兩個純文字版本中,我們儘量以通用字來表達缺字,在HTMLHelp版中則優先以Unicode來表達缺字,對於顯示格式、字體大小、顏色等也能有更好的編排選擇。

  我們使用自行撰寫的程式來進行轉檔,流程如下圖所示:(見圖2)

【圖2】XML檔輸出轉檔流程圖



  由圖2中可以看出,左側一份XML經文檔,可以經由Normal、HH、App三個轉檔程式,輸出各種不同格式的經文電子檔,以滿足各種不同需求的使用者。

伍、CBETA電子佛典標記的未來

  CBETA目前對電子佛典所做的標記還是相當有限的,因為CBETA現階段的工作重點在於建立電子佛典的基礎,因此我們並沒有太多的人力進行全面的內容標記。即使如此,對於五十餘冊《大正藏》,大約一億字的資料(還是文言文的),光是要進行這些基本的標記,工作量也不算小的了!

  未來,我們希望能做更進一步的內容標記,例如:人名、地名、時間、朝代、名相等等;利用這些標記,能設計出更方便大家使用的工具軟體。然而這可能不是CBETA可以獨力完成的工作,但或許CBETA可以在Internet上建立一個分工合作的機制,一套標準的佛典標籤集,讓Internet上專精不同領域的學者都能為電子佛典標記貢獻心力!

【附註】

註1:http://www.ultraedit.com/
註2:ftp://ftp.jclark.com/pub/sp/
註3:http://www.cvshome.org,http://www.wincvs.org/


【參考書目】

1. C. M. Sperberg-McQueen and Lou Burnard, Guidelines for Electronic Text Encoding and Interchange (TEI P3), Chicago, Oxford:Text Encoding Initiative, 1994.
2. Frank Boumphrey著;李寶華譯,《專業XML技術寶典》,台北市:眳p,民89。



[gaya首頁]   [圖書館服務]   [佛教圖書館館訊]   [館訊24期目次]