這篇文章主要為大家展示了“XML標(biāo)記語義的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“XML標(biāo)記語義的示例分析”這篇文章吧。
創(chuàng)新互聯(lián)建站自2013年起,先為利通等服務(wù)建站,利通等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為利通企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1 引 言
近年來,隨著數(shù)字出版的發(fā)展、萬維網(wǎng)應(yīng)用的迸發(fā)以及電子商務(wù)領(lǐng)域的快速發(fā)展,我們?nèi)粘5纳鐣?、商業(yè)、文化、生活等方方面面都開始應(yīng)用閃標(biāo)準(zhǔn)化通用標(biāo)記語言(Standard Generalized Markup Language,SGML)和可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)的文本標(biāo)記系統(tǒng)。SGML/XML是一種定義描述性標(biāo)記語言的機(jī)器可讀技術(shù)。除去一些需要特別處理的部分,這種語言能清晰地定義文檔結(jié)構(gòu)及其潛在意義。SGML/XML發(fā)展速度很快,廣泛使用這種技術(shù)能夠支持高性能的文檔互操作處理和出版。
這種美好的愿望已經(jīng)部分實(shí)現(xiàn)了,SGML/XML的優(yōu)越性超出了人們的預(yù)期,但是SGML/XML文檔系統(tǒng)在功能性、互操作性、多樣性和可獲取性上仍有待提高。若不抓住這個機(jī)會,后果會非常嚴(yán)重:實(shí)業(yè)界已經(jīng)花費(fèi)了高昂的財務(wù)成本,也失去了很多機(jī)會;在關(guān)鍵的安全應(yīng)用上還有可能導(dǎo)致一些災(zāi)難;對于殘疾人來說,這會阻礙他們平等地獲取當(dāng)代社會文化和商業(yè)福利。此外,久已存在的一些問題也在不斷提醒我們,當(dāng)下最好的數(shù)字文檔模型仍存在缺陷,至少是不夠完善的。
這些問題的根源在于,盡管SGML/XML能為文檔提供有意義的結(jié)構(gòu),但是SGML/XML不能以系統(tǒng)的機(jī)器可處理的方式來表示文檔組件和主題之間的基本語義關(guān)系。SGML/XML支持對機(jī)器可讀的“語法”進(jìn)行說明,但是它沒有提供解釋某種語法的語義內(nèi)涵的機(jī)制,所以一個SGML/XML詞匯的潛在意義到底是什么,還沒有辦法進(jìn)行形式化表達(dá)。利用當(dāng)下的SGML/XML甚至無法表達(dá)非常簡單的有關(guān)文檔標(biāo)注系統(tǒng)的基本語義事實(shí),這些事實(shí)通常是標(biāo)記語言設(shè)計師預(yù)先設(shè)計的,但具體實(shí)現(xiàn)仍舊依賴于標(biāo)記語言用戶和軟件。
這種表達(dá)功能的缺失使得SGML/XML用戶必須猜測標(biāo)記語言設(shè)計師想到的但沒有形式化表達(dá)出來的那些語義關(guān)系。內(nèi)容開發(fā)者必須猜測設(shè)計者的意圖,在內(nèi)容編碼時依靠這些推斷開展工作,無法將自己的推斷和意圖清晰地表達(dá)給其他人或者傳遞給處理編碼內(nèi)容的應(yīng)用程序。軟件設(shè)計師也需要猜測標(biāo)記語言設(shè)計師的可能意圖,并將這種猜想設(shè)計到軟件工具和應(yīng)用系統(tǒng)中。有時候二階的猜想是必須的:軟件設(shè)計師要猜測內(nèi)容開發(fā)者對標(biāo)記語言設(shè)計師意圖的推斷。
很顯然,這些猜測是不完整的、易錯的和未經(jīng)證實(shí)的。而且,制作和實(shí)現(xiàn)過程都費(fèi)時費(fèi)力,功能性和互操作性也很差。為一般的自然語言文檔配備一個SGML/XML的說明書并不能完美地解決這個問題。當(dāng)然,普通的自然語言文檔能給內(nèi)容提供者和軟件工程師提供一些提示,但是目前SGML/XML文檔還沒有通用的規(guī)則。不管怎么樣,普通的自然語言文檔不是機(jī)器可讀的形式,這就是我們要說的SGML/XML標(biāo)記系統(tǒng)的問題。
與SGML和XML相關(guān)的機(jī)器可處理的語義描述方面的設(shè)想還未形成,這是目前工程領(lǐng)域的問題和未來發(fā)展障礙的根源,相關(guān)的語義學(xué)研究也很少,但是很多學(xué)者已經(jīng)開始關(guān)注此問題。W3CSchema方面的工作與此相關(guān),但也只是覆蓋了這個問題中的很小一部分(比如數(shù)據(jù)類型)。W3C的“語義網(wǎng)”計劃也與此相關(guān),但它是為了發(fā)展通用的基于XML的知識表示技術(shù)。我們的研究重點(diǎn)是文檔標(biāo)記的語義,它隱藏在實(shí)際的文檔處理系統(tǒng)中。人們可能會說語義網(wǎng)的本質(zhì)就是設(shè)計語義標(biāo)記,然而在本文中,我們認(rèn)為解決以上問題還必須要深入考慮標(biāo)記的本質(zhì)意義。
接下來,本文首先從歷史背景方面說明標(biāo)記的意義問題(標(biāo)記在文本處理方法的發(fā)展中扮演了有趣的角色);其次,詳細(xì)描述是何種因素產(chǎn)生了形式語義標(biāo)記需求,何種因素決定了語義需求;最后簡要介紹一項多個機(jī)構(gòu)正在參與實(shí)施的研究計劃——BECHAMEL標(biāo)記語義計劃,該計劃正努力解決標(biāo)記的語義問題。
2 歷史背景
文檔“標(biāo)記”大概可以算作傳播系統(tǒng)的一部分,包括早期的書寫、抄寫出版和印刷,但是隨著數(shù)字文本處理和排版的發(fā)展,標(biāo)記的使用變得自覺又常見,同時也成了系統(tǒng)開發(fā)中一個重要的創(chuàng)新領(lǐng)域。20世紀(jì)60年代到80年代是文檔標(biāo)記系統(tǒng)全面系統(tǒng)化發(fā)展的時期,重點(diǎn)工作是提升數(shù)字排版和文本處理的有效性和功能性。20世紀(jì)80年代初期,人們依舊致力于研究標(biāo)記的理論框架,并利用該框架支持高性能系統(tǒng)的開發(fā)。這方面的一些成果已經(jīng)發(fā)表,但大部分成果還只是記錄在工作文檔和各種標(biāo)準(zhǔn)形式的產(chǎn)品上。
在這個階段出現(xiàn)的一種觀點(diǎn)是,文檔作為一種智力成果,更適合被抽象為一系列對象(如章節(jié)、段落、公式等)的有序?qū)哟位Y(jié)構(gòu)模型,而不是一維文本字符流模型。字符流常夾雜著大量定義格式的編碼、描述設(shè)計布局的結(jié)構(gòu)(如頁碼、分欄、印刷行)、像素值矩陣,以及其他一些在不同的文檔處理及存儲系統(tǒng)中潛在的表達(dá)形式。有序?qū)蛹壗Y(jié)構(gòu)模型概括了兩種具有本質(zhì)差別的標(biāo)注,分別是識別編輯文本對象(標(biāo)題、章節(jié)等)的標(biāo)注和說明版面要求的標(biāo)注。前者的應(yīng)用已經(jīng)取得一些成果。諸如標(biāo)題、章節(jié)、段落、方程式、引文之類的相關(guān)文檔元素能被分隔標(biāo)記清晰地標(biāo)示出來,之后通過映射給元素類型的規(guī)則來對元素進(jìn)行間接處理。這種內(nèi)容和形式的分離,能夠以常見的組合經(jīng)濟(jì)的方式實(shí)現(xiàn)基礎(chǔ)層面的間接性和抽象化。在文檔處理的所有方面,這種分離形式有巨大而多樣的實(shí)用價值,更重要的是它似乎說明了“文檔到底是什么”這個問題。用于實(shí)現(xiàn)如此功能的描述性標(biāo)記不只是標(biāo)出了元素的范圍,也攜帶了文檔模型想要揭示的意義(如這段文本是一個章節(jié))。
20世紀(jì)80年代初期,美國國家標(biāo)準(zhǔn)化局(ANSI/ISO)發(fā)布了很有影響力的SGML文檔標(biāo)記元語法,并梳理了標(biāo)記和文檔結(jié)構(gòu)方面之前所做的理論和分析工作。SGML為定義描述性標(biāo)記語言提供了一種機(jī)器可讀的形式。作為一種元語法,SGML沒有定義標(biāo)記語言,而是詳述了開發(fā)標(biāo)記語言中的機(jī)器可讀的技術(shù)。這個定義的核心是一種類似于巴科斯-諾爾范式(Backus-Naur Form,BNF)的形式化表達(dá)機(jī)制。這一機(jī)制攜帶有用于定義類型化屬性及其取值的規(guī)則,以及其他一些用于進(jìn)一步抽象化和間接化的設(shè)計(參見注釋中對文檔類型定義(Document Type Definitions,DTDs)和巴科斯-諾爾范式相似程度方面的總結(jié))。從結(jié)構(gòu)上來說,SGML文檔是一種具備有序分支和帶標(biāo)記節(jié)點(diǎn)的樹,它是其相應(yīng)的DTD的形式化產(chǎn)物。
經(jīng)過多年的分析和實(shí)踐,SGML背后的基本理念已經(jīng)眾所周知。利用元語法層面的行業(yè)級標(biāo)準(zhǔn)和詞表層面的本地化創(chuàng)新帶來的優(yōu)點(diǎn),SGML的特有機(jī)制(類巴科斯-諾爾范式的元語法,類型化屬性/屬性值對,實(shí)體引用等)在應(yīng)用程序和工具方面得到了高效實(shí)現(xiàn)。SGML標(biāo)記語言本身在發(fā)展中似乎也同時支持和優(yōu)化用于文檔系統(tǒng)設(shè)計、實(shí)施和利用的理想的工作流程。20世紀(jì)80年代中期到90年代初期,大量基于SGML的標(biāo)注系統(tǒng)發(fā)展起來。
盡管SGML的發(fā)展得到很多關(guān)注,其想法也不錯,并在多個領(lǐng)域成功實(shí)施,但在最初的十年里,幾乎沒人使用它。導(dǎo)致這個結(jié)果的因素有很多,但最重要的還是SGML自身過于復(fù)雜,特別是SGML中包含了許多復(fù)雜的可選屬性,對應(yīng)的軟件可能根本沒必要對其實(shí)現(xiàn),導(dǎo)致SGML軟件開發(fā)速度非常緩慢。更糟糕的是,如果文檔未經(jīng)DTD驗證,進(jìn)一步的分析就不可能實(shí)現(xiàn)??s寫控制意味著如果不考慮文檔語法,元素邊界都無法確定下來。另外,SGML還包含了一些其他屬性,它們會導(dǎo)致已有的語法分析工具不適用于形式語法,無法進(jìn)行高效的語法分析。
在網(wǎng)絡(luò)出版和交流方面,SGML系統(tǒng)可應(yīng)用于HTML(超文本標(biāo)記語言)方面。最初的HTML版本定義很松散,缺乏正式的語法說明。后來人們對HTML的SGMLDTD有了興趣,事實(shí)證明為已經(jīng)成為“正確”實(shí)踐的東西設(shè)計DTD是很困難的。更重要的是,由于在最初的HTML說明書中,供應(yīng)商隨意地把程序性標(biāo)記(如
參考如下XML標(biāo)記文檔的片段
熟悉結(jié)構(gòu)
化標(biāo)記的讀者自然知道文檔元素中的標(biāo)簽P代表段落,該段落有一個標(biāo)題,標(biāo)題元素之后的段落內(nèi)容形成了文本主體,它從標(biāo)題元素之后開始,并在段落結(jié)束標(biāo)簽之前結(jié)束。標(biāo)簽的意義和用法并不一目了然,所以作者或讀者可以參考標(biāo)記集合的說明文檔
明顯的標(biāo)記是為方便人類讀者而設(shè)計的。這些標(biāo)記并不能借助文檔語法分析器,從數(shù)據(jù)結(jié)構(gòu)中抽取出來。正如圖1所示,解析樹(樣式表程序員所用)展示了頭部、引文以及引文前后的文本,這些部分每個都是段落的獨(dú)立子節(jié)點(diǎn),但解析樹沒法展示以下特征:頭部是整個段落的一個屬性,文本是內(nèi)容結(jié)構(gòu)中的兩個部分,引文嵌入在文本內(nèi)部。
事實(shí)上,數(shù)據(jù)結(jié)構(gòu)本身并沒有段落和引文之分或與之相關(guān)的東西。數(shù)據(jù)結(jié)構(gòu)僅僅是關(guān)聯(lián)信息的圖型結(jié)構(gòu),就像一個有著“段落”取值的通用標(biāo)識符。程序應(yīng)當(dāng)能推斷出文檔意義與使用標(biāo)簽之間的一致性,并能在樹形結(jié)構(gòu)從一種形式轉(zhuǎn)換為另一種形式時利用這種知識。但是,這種轉(zhuǎn)換(例如,通過XSLT、DSSSL或者類似C++的程序語言進(jìn)行轉(zhuǎn)換)依靠的是語義推理,而不是顯性的編碼
圖2展示了如何通過利用語義知識來豐富和增強(qiáng)語法樹。利用知識表示技術(shù)能夠在更高的層面上將整體和部分之間的關(guān)系進(jìn)行編碼,更適合計算機(jī)處理。此圖展示了一種傳統(tǒng)的語義網(wǎng)絡(luò)表示方法,當(dāng)然其他的方法也正在發(fā)展中,包括框架表示法、規(guī)則表示法、形式語法以及基于邏輯的表示法等。語義網(wǎng)計劃(本文第八部分)的發(fā)展甚至能為標(biāo)記語言本身提供合適的表示方法。問題的關(guān)鍵在于,要為無法由傳統(tǒng)的XML/SGML解析器建模和執(zhí)行的抽象概念、關(guān)聯(lián)和約束建立一個層次體系。
在機(jī)器可讀的文件(如DTD或者語法結(jié)構(gòu))里的編碼知識能夠被用于驗證文檔的語義約束,為應(yīng)用程序提供更強(qiáng)大的文檔模型。這些更有表現(xiàn)力的表示方法為更好的文檔處理系統(tǒng)的設(shè)計和實(shí)現(xiàn)提供了強(qiáng)有力的支持。
6 應(yīng) 用
近年來,許多新技術(shù)的發(fā)展使得常規(guī)的結(jié)構(gòu)化標(biāo)注越來越盛行。這些技術(shù)在信息管理中主要強(qiáng)調(diào)以下幾個方面的問題。
轉(zhuǎn)換和聯(lián)合。對于SGML/XML開發(fā)人員來說,最常見的工作就是設(shè)計轉(zhuǎn)換形式,從一種應(yīng)用語法轉(zhuǎn)換到另一種應(yīng)用語法。這樣做是為了創(chuàng)建新型文件表示方式,或者方便其存儲于數(shù)據(jù)庫中。有時候,開發(fā)人員需要整合或調(diào)整大型的數(shù)字文檔集合,每個數(shù)字文檔都由一種無法進(jìn)行互操作的標(biāo)記語言表示。不考慮轉(zhuǎn)換的范圍大小,常規(guī)的解決方式是使用一種在語法解析樹上起直接作用的轉(zhuǎn)換程序語言。源文件分析中產(chǎn)生的樹結(jié)構(gòu)轉(zhuǎn)換成目標(biāo)語言的樹結(jié)構(gòu)實(shí)例。轉(zhuǎn)換之后的樹被序列化成新的文檔實(shí)例、圖形或音頻。
信息孤島。這個問題與上述的轉(zhuǎn)換問題很相似,但是其目標(biāo)不是將一個形式的文檔轉(zhuǎn)換為另一種形式的文檔,而是允許分布存儲的文檔或文檔片段能夠向系統(tǒng)用戶提供一個通用的透明訪問接口。盡管沒必要將文檔從一種標(biāo)記語言逐字逐句地轉(zhuǎn)換成另一種標(biāo)記語言,但是系統(tǒng)必須能夠保證文檔內(nèi)容表面上看起來是無縫融合的,盡管文檔的編碼可能差別很大。
可獲得性。創(chuàng)作工具逐漸接受了結(jié)構(gòu)化標(biāo)記,這已經(jīng)成為視覺障礙用戶獲取數(shù)字文檔的福音。聲明性標(biāo)記使得人們能夠借助屏幕閱讀器或盲文顯示器進(jìn)行閱讀,并在助記符幫助下進(jìn)行推斷,而不是利用圖形線索。但是,目前這樣的應(yīng)用需要依賴用戶自身的能力或界面軟件,基于獨(dú)立的標(biāo)簽內(nèi)容或語法得出的結(jié)構(gòu)性推論。正如標(biāo)簽集文檔中描述的一樣,標(biāo)記語法約束及標(biāo)記的意義和使用都嚴(yán)格地依賴于文檔作者的可信性。遺憾的是,作者經(jīng)常會誤用標(biāo)簽,最糟糕的例子就是在web頁面上使用“頭部”標(biāo)簽來標(biāo)記某些特別的版式。
安全處理。發(fā)展更有表達(dá)力的標(biāo)記模式語言(比如W3C的XML Schema語言)的部分動力是人們認(rèn)識到標(biāo)記錯誤、誤用和濫用的后果遠(yuǎn)比糟糕的格式化輸出要嚴(yán)重得多。聲明性標(biāo)記不僅用于電子商務(wù),也用于安全信息領(lǐng)域,比如醫(yī)療記錄和航空工業(yè)。這些領(lǐng)域的開發(fā)人員不但要確保數(shù)字文檔的語法結(jié)構(gòu)規(guī)范,也要確保其遵守某些安全協(xié)議,以保證文檔的安全處理、存儲、傳輸和表示。
7 標(biāo)記語義的優(yōu)點(diǎn)
目前BECHAMEL計劃的調(diào)研結(jié)果顯示,標(biāo)記語義能夠通過以下幾種方式解決上述問題。
聲明性的、機(jī)器可讀的語義描述。就目前的實(shí)際情況而言,結(jié)構(gòu)化標(biāo)記語言設(shè)計師用自然語言文本表達(dá)了標(biāo)簽的意義,明確了其合適的使用方式。形式化的標(biāo)記語義體系使得本體之間的聯(lián)系能被計算機(jī)程序清晰地表達(dá),并實(shí)現(xiàn)自動化處理。
假設(shè)的驗證。在沒有形式化標(biāo)簽集的文檔環(huán)境中,擁有標(biāo)記語義解釋能力的系統(tǒng)提供了一種測試猜測和驗證假設(shè)的環(huán)境。在這種環(huán)境中,未公開的標(biāo)記語言用戶會對那些他認(rèn)為在文檔數(shù)據(jù)庫中持續(xù)應(yīng)用的屬性和規(guī)則進(jìn)行推測。之后文檔處理軟件就會檢索那些與假設(shè)規(guī)則兼容或不兼容的文檔元素。
語義約束的增強(qiáng)。支持有效性驗證的解析器不僅能夠像常規(guī)語義解析器一樣完成語法驗證,也能夠在發(fā)現(xiàn)或編寫語義的過程中同時驗證這種猜測,這樣的解析器同樣能夠加強(qiáng)語義約束。這項操作同假設(shè)驗證一致,但是在這種情況下,語義約束是已知且規(guī)范的。
優(yōu)化的更有表現(xiàn)力的APIs。使用SGML和XML應(yīng)用程序轉(zhuǎn)換或表示數(shù)字文檔時,都會使用標(biāo)記語義。但是只有在執(zhí)行程序時,更高級別的屬性和關(guān)聯(lián)才會顯示出來。形式化的、機(jī)器可讀的語義會豐富應(yīng)用程序的接口,加快軟件設(shè)計速度,隨著標(biāo)記語言的發(fā)展和變化,這些軟件維護(hù)起來也能更加方便和安全。
8 相關(guān)工作
針對上述挑戰(zhàn)和問題,還有很多其他的文檔處理技術(shù)、標(biāo)準(zhǔn)和研究計劃。接下來我們梳理一下試圖解決這些問題的現(xiàn)有想法。
語義網(wǎng)。語義網(wǎng)指的是眾多相互聯(lián)系的研究和標(biāo)準(zhǔn)化工作,就像當(dāng)下一些有關(guān)標(biāo)記和知識表示技術(shù)的想法。最核心的當(dāng)屬W3C的資源描述框架,當(dāng)然也包括其他的技術(shù),比如ISO的主題圖技術(shù)。語義網(wǎng)的范圍很廣,目標(biāo)宏大,旨在利用通用知識表示技術(shù)來完善標(biāo)記語言,從而“促進(jìn)人類知識的全面發(fā)展”。語義網(wǎng)的研究和標(biāo)準(zhǔn)化不同于當(dāng)下的想法:不是對特定領(lǐng)域進(jìn)行語義描述,而是實(shí)現(xiàn)對所有領(lǐng)域的知識進(jìn)行語義標(biāo)注。當(dāng)前研究的目標(biāo)特別盯在“文檔標(biāo)記語義”上,而非“通用的語義標(biāo)記”。語義網(wǎng)技術(shù)的進(jìn)步會讓我們利用語義網(wǎng)標(biāo)記語言對標(biāo)記的語義進(jìn)行編碼成為可能。
W3C的文檔對象模型。文檔對象模型是一個應(yīng)用程序接口,是對XML文檔進(jìn)行分析后生成的層級式數(shù)據(jù)結(jié)構(gòu)。人們想設(shè)計能為標(biāo)記語義提供各種接口的系統(tǒng),類似于DOM所提供的標(biāo)記語法相關(guān)的形式,最終能夠形成“語義DOM”,對W3C的語法DOM形成補(bǔ)充。
W3C的Schema。XML Schema是一門基于XML的語言,能夠替代傳統(tǒng)的DTDs,用于約束XML文檔。DTDs的局限性推動了這門語言的發(fā)展,這些局限同我們在BECHAMEL計劃中面對的問題是類似的。Schema允許文檔類設(shè)計師定義復(fù)雜的數(shù)據(jù)類型,就像在高級程序語言里面的做法一樣。但是,為了對標(biāo)簽集建檔中的所有關(guān)系和約束進(jìn)行編碼,我們還需要比當(dāng)下的XML Schema更強(qiáng)大的表達(dá)形式。超媒體/時基結(jié)構(gòu)語言(Hypermedia/Time based Structuring Language,HyTime)的架構(gòu)形式。適應(yīng)性廣泛的架構(gòu)技術(shù)來自于這樣一種認(rèn)識,即不同的標(biāo)記語言應(yīng)用程序常常通過樣式各不相同但語義上等價的結(jié)構(gòu)進(jìn)行編碼。架構(gòu)形式允許文檔類設(shè)計師將其自有的特定元素實(shí)例映射到更通用的各種架構(gòu)實(shí)例上,這些架構(gòu)實(shí)例更便于在不同的應(yīng)用程序之間進(jìn)行映射。這些映射的確表示了語義知識的約束形式,有利于解決上述轉(zhuǎn)換和集成上的挑戰(zhàn)。BECHAMEL計劃在某種程度上就是要建立一個比架構(gòu)形式表達(dá)更多語義關(guān)系的模型。
以上是“XML標(biāo)記語義的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!