- 相關(guān)推薦
基于XML的三個(gè)常用元數(shù)據(jù)描述工具的評(píng)價(jià)與比較
【內(nèi)容提要】隨著Internet和WWW的飛速發(fā)展,XML憑借其自身的特點(diǎn),為網(wǎng)絡(luò)信息的管理、搜索以及Web上各種應(yīng)用的鏈接提供了極大的便利,從而得到了廣泛應(yīng)用。XML的一個(gè)重要特點(diǎn)就是允許用戶定義自己的標(biāo)簽,從而實(shí)現(xiàn)對(duì)信息的存儲(chǔ)和管理。XML中較常用的標(biāo)簽定義工具有DTD和XMLSchema,而RDF是一個(gè)專用的元數(shù)據(jù)描述框架。本文結(jié)合一個(gè)MARC元數(shù)據(jù)描述的實(shí)例,對(duì)這三個(gè)工具進(jìn)行了比較細(xì)致的分析和對(duì)比,并對(duì)未……1 引言
XML是繼HTML之后的又一種WEB標(biāo)記語言,它為用戶提供了靈活的標(biāo)記擴(kuò)展機(jī)制,使得不同內(nèi)容的資源能以格式良好的自定義的標(biāo)記元素來表現(xiàn)。元數(shù)據(jù)是描述信息資源或數(shù)據(jù)等對(duì)象的數(shù)據(jù),主要用來識(shí)別、評(píng)價(jià)、追蹤資源,以及方便對(duì)資源的管理、發(fā)現(xiàn)、查找和交換。隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,特別是Internet的普及,網(wǎng)絡(luò)環(huán)境下信息的描述和處理成為一個(gè)重要的問題,相應(yīng)地網(wǎng)絡(luò)環(huán)境下的元數(shù)據(jù)問題也成為一個(gè)研究的熱點(diǎn)。DTD和XMLSchema是XML中常用的進(jìn)行標(biāo)記擴(kuò)展的工具,RDF是專用的元數(shù)據(jù)描述工具,網(wǎng)絡(luò)環(huán)境下的元數(shù)據(jù)描述通常就是借助這幾個(gè)工具,利用XML的標(biāo)記可擴(kuò)展性來完成。在這三個(gè)工具中,DTD隨著XML1.0最早被提出,伴隨著XML應(yīng)用的普及和人們對(duì)DTD認(rèn)識(shí)的加深,又進(jìn)一步提出了RDF和更有發(fā)展?jié)摿Φ腦MLSchema。
2 DTD
DTD作為XML1.0規(guī)范的重要組成部分,它使用EBNF(ExtendedBackusNaurForm)語法完成XML文檔結(jié)構(gòu)的定義,即XML文檔中標(biāo)記的定義。一個(gè)XML文檔只能對(duì)應(yīng)一個(gè)DTD,一個(gè)DTD由一系列標(biāo)記定義組成,包括元素定義(elementdeclaration)、屬性定義(attribatedeclaration)、實(shí)體定義(entitydeclaration)、注釋定義(notationdeclaration),是目前支持和應(yīng)用最廣泛的一種標(biāo)記擴(kuò)展工具。例如,一個(gè)用于描述MARC元數(shù)據(jù)的XML文檔的DTD可以定義如下:
。迹OCTYPEmare[
。迹LEMENTmarc(record) *>
。!ATTLISTmareTYPE(CN|US|UN11) #REQUIRED>
。迹LEMENTrecord(datafield) *>
。!ATTLISTrecord
typeCDATA#REQURED
infoCDATA#REQUIRED>
。!ELEMENT,datafield(subdatafield) *>
。!ATTLISTdatafield
tagCDATA#REQUIRED
ind1CDATA#IMPLIED
ind2CDATA#IMPLIED>
。!ELEMENTsubdatafield(#PCDATA)>
<!ATTLISTsubfield
codeCDATA#REQUIRED>
]>
上例中各個(gè)標(biāo)記和屬性的作用如下:
<MARC>:用于標(biāo)記內(nèi)容的開始和結(jié)束,屬性“type”用于標(biāo)記MARC類型,如CNMARC,USMARC,UNIMARC。
。糝ECORD>:用于標(biāo)記MARC記錄的24byte定長頭標(biāo)區(qū),屬性有“type”和“info”。
。糄ATAFIELD>:MARC記錄數(shù)據(jù)字段區(qū)的數(shù)據(jù)字段標(biāo)記,對(duì)應(yīng)MARC記錄中每個(gè)字段的內(nèi)容,屬性“tag”、“ind1”和“ind2”分別代表字段標(biāo)識(shí)、第一和第二指示符。
。糞UBDATAFIELD>:MARC記錄數(shù)據(jù)字段區(qū)中數(shù)據(jù)字段的子字段標(biāo)記,屬性“code”為子字段標(biāo)識(shí)。
通過該例,我們可以看到DTD較好地完成了XML的標(biāo)記擴(kuò)展(即元數(shù)據(jù)描述)的任務(wù),目前在Internet上已有大量使用DTD描述的元數(shù)據(jù)存在。但是DTD提出較早,人們在使用過程中也發(fā)現(xiàn)它有很多的不足之處。其主要特點(diǎn)如下:
、匐y以理解和書寫。由于采用的是不同于XML的名為EBNF的語法,因?yàn)樾枰攘私釫BNF,這對(duì)于人們的閱讀和書寫都帶來了困難。
、陔y以使用程序進(jìn)行元數(shù)據(jù)的自動(dòng)處理。由于使用EBNF語法,這給DTD的自動(dòng)處理也帶來了麻煩。通常情況下,我們需要對(duì)DTD進(jìn)行驗(yàn)證,這時(shí)使用DOM就不可能對(duì)使用EBNF語法書寫的DTD進(jìn)行分析,而必須使用專門的分析程序進(jìn)行分析驗(yàn)證。
、跠TD不支持?jǐn)?shù)據(jù)類型。DTD只支持包括文檔類型在內(nèi)的少數(shù)幾種數(shù)據(jù)類型,這意味著在實(shí)際使用過程中經(jīng)常需要進(jìn)行類型的轉(zhuǎn)換才能達(dá)到預(yù)想的效果。
、蹹TD不支持Namespaces。由于必須把所有的元數(shù)據(jù)放在一個(gè)DTD文件中,如果需要對(duì)已有的DTD進(jìn)行擴(kuò)充則只能在原文件的基礎(chǔ)上進(jìn)行重寫,這對(duì)于元數(shù)據(jù)的維護(hù)和擴(kuò)充都十分不方便。
總之,DTD在簡單的文檔結(jié)構(gòu)定義方面是較出色的,如果考慮到XML,是源自同樣使用DTD的SGML的話,理解在XML1.0中選擇了DTD就不難了。但如果我們考慮到XML的用途現(xiàn)在已不僅局限于文檔處理,那么DTD的這些缺點(diǎn)就變得日趨嚴(yán)重。因此W3C(WorldWideWebConsortium)在看到了DTD的諸多問題之后,提出了一系列用來代替DTD的建議(Recommendation,即正式標(biāo)準(zhǔn)),包括RDF、XML-Data、DCD、XMLSchema等,其中以RDF和XM
【基于XML的三個(gè)常用元數(shù)據(jù)描述工具的評(píng)價(jià)與比較】相關(guān)文章:
基于XML的果園環(huán)境數(shù)據(jù)采集和數(shù)據(jù)表示03-19
基于XMLSchema的元數(shù)據(jù)方案實(shí)現(xiàn)03-21
基于XML的作業(yè)答疑系統(tǒng)XML+SQL03-30
基于XML的三層C/S模型03-20
實(shí)現(xiàn)基于網(wǎng)頁的數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入03-18
基于Perl的DoS工具設(shè)計(jì)與實(shí)現(xiàn)03-10