專利名稱:通過利用較短字代替長字來壓縮標(biāo)記語言文件的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及信息的壓縮,更具體而言,涉及標(biāo)記語言文檔的壓縮。
背景技術(shù):
在電信或數(shù)據(jù)通信領(lǐng)域以及類似或相關(guān)領(lǐng)域中,在各種環(huán)境之間交換信息是必要的,例如在不同的數(shù)據(jù)程序、不同的數(shù)據(jù)庫以及不同的軟件和硬件平臺之間等。
所有信息交換的先決條件是,接收器和發(fā)送器以相同的方式解釋和理解所交換的信息。例如,這可以通過開發(fā)定義了要交換的信息的結(jié)構(gòu)的特殊數(shù)據(jù)形式來實現(xiàn),其中發(fā)送器和接收器都使用相同的數(shù)據(jù)形式。
這種數(shù)據(jù)形式通常都與特定環(huán)境緊密聯(lián)系,例如被結(jié)合在特定應(yīng)用程序的可執(zhí)行計算機(jī)代碼之中。這有利于實現(xiàn)小的且?guī)捰行У男畔?packet)(數(shù)據(jù)包)的交換。另一方面,與特定環(huán)境緊密聯(lián)系的數(shù)據(jù)形式變得相當(dāng)靜態(tài),并且實際上不可能使用現(xiàn)有的數(shù)據(jù)形式來交換除了本信息之外具有另一結(jié)構(gòu)的信息。因此,對信息結(jié)構(gòu)的任何修改都將需要數(shù)據(jù)形式的適應(yīng)。
因此,在特定環(huán)境和所使用的數(shù)據(jù)形式之間的緊密聯(lián)系意味著,在信息結(jié)構(gòu)改變的時候,例如造成重新設(shè)計特定應(yīng)用程序的可執(zhí)行計算機(jī)代碼的時候,該環(huán)境必須被重新設(shè)計。這使得在動態(tài)環(huán)境中維持系統(tǒng)變得困難而昂貴。
另外,為特定環(huán)境設(shè)計的數(shù)據(jù)形式通常不能支持與其它環(huán)境(例如其它應(yīng)用程序或其它平臺)的信息交換。于是公知的解決方案是開發(fā)用于重新配置特定的信息結(jié)構(gòu)以適應(yīng)其它環(huán)境的不同分析器(parser)。例如,可以解析從特定應(yīng)用程序或特定平臺傳送的信息以適應(yīng)另一接收應(yīng)用程序或平臺。然而,類似于對內(nèi)部使用的數(shù)據(jù)形式的改變的適應(yīng),分析器方法的缺點在于,必須重新設(shè)計分析器以改變信息結(jié)構(gòu),例如重新設(shè)計特定分析器的計算機(jī)代碼,這再次使得在動態(tài)環(huán)境中維持系統(tǒng)變得困難而昂貴。
另一個更動態(tài)的解決方案是使用兩部分(two-part)的數(shù)據(jù)形式。這里,交換的信息的結(jié)構(gòu)被定義在第一部分中,它可以是任何包括數(shù)據(jù)的配置,例如數(shù)據(jù)庫或者甚至包括簡單文本文檔的數(shù)據(jù)文件等。這明顯不同于被結(jié)合到應(yīng)用程序或分析器程序或類似程序中的信息結(jié)構(gòu)。而且,在兩部分的解決方案中的第二部分包括將要交換的信息,該信息是根據(jù)在第一部分中定義的結(jié)構(gòu)進(jìn)行配置的。
第一部分和第二部分可以被配置為一個單元(例如在一個數(shù)據(jù)文件中),或者被配置為兩個獨(dú)立的單元(例如作為兩個獨(dú)立的數(shù)據(jù)文件)。然而,兩個獨(dú)立的單元通常預(yù)先假設(shè)第一單元與第二單元一起被交換,或者否則第一單元對于接收器是已知的,例如被預(yù)先存儲在接收環(huán)境中,或者否則對于接收環(huán)境是可訪問的。
如上面簡述的兩部分的解決方案使得分析器通過考慮第一部分所定義的信息結(jié)構(gòu)而能夠使其操作適應(yīng)于第二部分所包括的交換的信息的結(jié)構(gòu)。信息結(jié)構(gòu)的定義使得一般分析器能夠重新配置交換的信息以適應(yīng)所討論的接收環(huán)境。因此,兩部分的解決方案或者類似的解決方案使得能夠使用一個單獨(dú)的分析器,以用于通過考慮相關(guān)的信息結(jié)構(gòu)定義來處理大量的信息結(jié)構(gòu)。
這明顯不同于其中交換信息的結(jié)構(gòu)由分析器程序本身來反映的解決方案,因為如果信息結(jié)構(gòu)發(fā)生改變,那么分析器必須被重新編程。作為對分析器困難且昂貴的重新編程的替換,兩部分的解決方案提供了僅僅重寫第一部分所包括的信息結(jié)構(gòu)的定義的可能性。這就能夠如同編輯定義了本信息結(jié)構(gòu)的現(xiàn)有文本文檔一樣地容易。
而且,信息結(jié)構(gòu)的原始定義通常被定義在所討論的系統(tǒng)或環(huán)境的規(guī)范中。換句話說,規(guī)定信息結(jié)構(gòu)的文本文檔通??蓮南到y(tǒng)或環(huán)境的設(shè)計階段獲得。該文本可以由簡單方式編輯以形成在兩部分的解決方案中的第一定義部分,例如結(jié)合如下所述的標(biāo)記語言。
現(xiàn)有技術(shù)中已知各種兩部分的數(shù)據(jù)形式,其中第一部分定義信息結(jié)構(gòu),以及第二部分包括根據(jù)定義的信息結(jié)構(gòu)而配置的信息。特別是,已經(jīng)使用兩部分的數(shù)據(jù)形式開發(fā)了各種所謂的標(biāo)記語言。
標(biāo)記語言指的是一組標(biāo)記約定(convention),其用于編碼文本,即編碼包括要在不同環(huán)境之間進(jìn)行交換的信息的文本文檔。標(biāo)記語言可以特別地規(guī)定什么標(biāo)記是允許的,什么標(biāo)記是需要的,標(biāo)記如何區(qū)別于文本,以及標(biāo)記表示什么。
SGML(標(biāo)準(zhǔn)通用標(biāo)記語言)是用于描述所標(biāo)記的電子文本的標(biāo)記語言的一個例子。類似標(biāo)記語言的另一個例子是由萬維網(wǎng)聯(lián)盟(參見W3C網(wǎng)頁http//www.w3.org/XML)開發(fā)的XML(可擴(kuò)展標(biāo)記語言)。這種標(biāo)記語言是元語言,即一種形式上描述語言(在這種情況下是標(biāo)記語言)的方式。SGML和XML都廣泛用于定義電子存儲和處理文本所包括的信息的設(shè)備獨(dú)立、系統(tǒng)獨(dú)立的方法。
諸如SGML、XML之類的標(biāo)記語言都是可擴(kuò)展的,即它們不包含固定的預(yù)定標(biāo)簽(tag)組或者類似的定義方式。而且,依照標(biāo)記語言的文檔必須是很好地依照語法而形成的,其優(yōu)選是由用戶定義的,其中特定文檔可以在形式上被證實符合該語法。典型的標(biāo)記語言共同具有三個重點第一,它們使用描述性的而不是過程性的標(biāo)記;第二,它們使用文檔類型的概念;以及第三,它們實質(zhì)上獨(dú)立于任何一個硬件或軟件系統(tǒng)。以下簡要討論這三個方面。
關(guān)于描述性標(biāo)記而不是過程性標(biāo)記的第一個重點意味著標(biāo)記所做的只不過是分類或定義文檔的多個部分。諸如<para>之類的標(biāo)記代碼只標(biāo)識文檔的一部分,并聲明“下面的項是一段”等。相反,過程性標(biāo)記定義了在文檔中的特定點要執(zhí)行什么處理,例如“調(diào)用過程PARA”或者“移動左邊緣留下兩個空格(quad)”等。通常,處理標(biāo)記文檔(例如格式化文檔)所需的指令明顯區(qū)別于文檔中的描述性標(biāo)記。過程指令和類似指令通常都集中在文檔之外的獨(dú)立過程或程序之中,例如以稱為樣式表的獨(dú)特文檔來表示。通過使用描述性標(biāo)記而不是過程性標(biāo)記,相同的文檔可以以許多不同的方式進(jìn)行處理,只使用被認(rèn)為是相關(guān)的那些部分。例如,一個程序可以從標(biāo)記文檔中提取人和地點的名稱以產(chǎn)生索引或數(shù)據(jù)庫,而對相同文檔操作的另一個程序可以以兩種不同的字體打印人和地點的名稱。
關(guān)于使用文檔類型概念的第二個重點意味著標(biāo)記文檔被認(rèn)為具有類型,正如計算機(jī)所處理的其它對象一樣。如果文檔屬于已知的類型,那么這使具有明確的文檔類型定義的計算機(jī)程序能夠檢查聲稱屬于那種類型的任何文檔事實上是否符合規(guī)范。特別地,相同類型的不同文檔能夠以統(tǒng)一的方式進(jìn)行處理。而且,可以寫諸如樣式表以及尤其是分析器之類的程序或者類似程序以利用這種文檔所包括的信息結(jié)構(gòu)中所封裝的知識,其例如使分析器能夠以更加智能的方式運(yùn)行。
關(guān)于硬件和軟件獨(dú)立性的第三個重點意味著,標(biāo)記語言的基本設(shè)計目標(biāo)是保證依照標(biāo)記語言的規(guī)定所編碼的文檔能夠從一個硬件和軟件環(huán)境移動到另一個環(huán)境而不損失信息。使硬件和軟件能夠獨(dú)立的一個步驟是讓特定標(biāo)記語言的所有文檔都使用相同的基礎(chǔ)字符編碼。例如,以XML編碼的字符是由國際標(biāo)準(zhǔn)定義的,(ISO/IEC 10646信息技術(shù)一通用多八位編碼字符集(UCS)),它是由稱為UnicodeConsortium的工業(yè)群體所主張的通用字符集實現(xiàn)的,并且被稱為Unicode。這提供了一種標(biāo)準(zhǔn)化的方式來表示構(gòu)成世界書寫系統(tǒng)的數(shù)千個離散符號中的任何一個。另一種可能但更有限的字符編碼可能是ASCII(美國信息交換標(biāo)準(zhǔn)代碼)的ISO/IEC 646版本。
用于標(biāo)記或識別文本結(jié)構(gòu)的簡單而一致的機(jī)制是例如由上述XML提供的。XML的兩部分特性是由XML文檔和定義在XML文檔中的信息結(jié)構(gòu)的XML文檔類型定義(DTD)反映的。正如將要解釋的,文檔類型定義(DTD)可以被嵌入在XML文檔中(內(nèi)部DTD),或者為獨(dú)立的文本文件或類似的文件所包括(外部DTD)。應(yīng)該注意,還存在定義XML文檔的結(jié)構(gòu)的其它方式,例如通過使用所謂的XML模式(XML-schema)。
而且,DTD或XML模式能夠用于檢查標(biāo)記文檔的語法,這意味著由相同密鑰所檢查和批準(zhǔn)的所有標(biāo)記文檔具有相同的信息結(jié)構(gòu),盡管它們可以具有不同的信息內(nèi)容。
XML文檔包括兩種成分,即標(biāo)記和字符數(shù)據(jù)。標(biāo)記構(gòu)成文檔的框架并指示目標(biāo)應(yīng)用程序或者類似程序可以如何解釋和處理內(nèi)容。基本的XML標(biāo)記是元素屬性、引用(reference)以及過程指令,盡管還存在其它XML標(biāo)記。而且,其它標(biāo)記語言也可以具有其它標(biāo)記。XML文檔中不是標(biāo)記的信息被看作字符數(shù)據(jù)。
XML標(biāo)記意味著所稱的標(biāo)簽包圍在文檔中可識別的部分。標(biāo)簽使文檔分成稱為元素的有名單元的邏輯結(jié)構(gòu)。開始標(biāo)簽和結(jié)束標(biāo)簽以及由它們包圍的數(shù)據(jù)包括一個元素。例如,簡單的元素可以是<name>Smith</name>,其中<name>和</name>分別構(gòu)成開始標(biāo)簽和結(jié)束標(biāo)簽,其中在這個簡單的例子中,“Smith”構(gòu)成該元素的字符數(shù)據(jù)內(nèi)容。元素也可以是空的,例如<name></name>或者可替換地<name/>。
XML元素往往包含另外的嵌入元素。嵌入元素必須由別的元素完全包圍,并且整個文檔必須由一個單獨(dú)的文檔元素即根元素包圍。
具有根元素“start”的文檔結(jié)構(gòu)的簡單例子如下,其中“start”包圍(endorse)元素“person”,元素“person”又包圍元素“name”和“phone”<start><person>
<name>Smith</name>
<phone>+46 31 7470000</phone></person></start>
文檔元素結(jié)構(gòu)層次(hierarchy)可以被形象化為盒子中的盒子(或者俄羅斯娃娃(Russian doll)),或者被形象化為樹的分枝,其中對不同類型的元素給予不同的名稱。然而,除了特定類型的元素與其它元素類型的關(guān)系以外,XML不提供任何方式來表示該特定類型元素的含義。相反,由XML詞匯的創(chuàng)建者來決定為它們標(biāo)識的元素選擇可理解的名稱并用文本標(biāo)記來定義它們的適當(dāng)使用。
XML也提供要嵌入到元素的開始標(biāo)簽中的一個或若干屬性。這種屬性提供有關(guān)元素的附加信息,其中屬性名的后面是等號,并且屬性值又由引號所包圍。
示例的元素屬性是<name keyaccount=“yes”>Smith</name>,其中屬性“keyaccount”已經(jīng)被分配了值“yes”。
目標(biāo)應(yīng)用程序可以以其選擇的任何方式使用屬性值。例如,格式器可以以不同于打印具有設(shè)置為“no”的“keycustomer”屬性的“name”元素的方式來打印具有設(shè)置為“yes”的該屬性的“name”元素。另一個目標(biāo)應(yīng)用程序可以使用相同的屬性來確定“name”元素究竟是否要被處理。
另外,XML提供了將對實體的引用插入在標(biāo)記文檔中的可能性。實體可以以其最簡單的形式包括從一個字符到整個文檔的字符數(shù)據(jù)的任何東西,它將代替該引用。引用很象字處理器搜索和替換功能那樣起作用,即一個字或短語(實體引用)被定位,并由另一個字或短語(實體)來替換。
實體引用的示例是<letter>&letterhead</letter>
該引用使得有可能利用由實體包括的內(nèi)容來代替實體引用“&letterhead”,例如在每個字母的開始處插入letterhead信息。
例如,如果實體“l(fā)etterhead”已經(jīng)被聲明包括多個單詞“ACMEConstruction INC”,那么在標(biāo)記文檔中引用“&letterhead”的每個實例將由多個單詞“ACME Construction INC”來代替。
雖然使用XML的目的之一在于從文檔本身刪除處理文檔所特定的任何信息,但是在文檔中包括這種信息仍然會是便利的——只要如此,則其能夠明顯區(qū)別于文檔的結(jié)構(gòu)。例如,斷頁(page-breaking)決策通常最好由目標(biāo)應(yīng)用程序格式引擎或者類似引擎來執(zhí)行,但總是存在會有必要不考慮這些的機(jī)會。插入到文檔中的XML處理指令是一種實現(xiàn)這一點而不干擾標(biāo)記的其它方面的有效方式。
XML處理指令以<?開始并以?>結(jié)束,并且示例的處理指令可以是<?tex newpage?>。按照慣例,第一部分是某一處理器的名稱(在上面例子中的tex),以及第二部分是預(yù)定供該處理器使用的一些數(shù)據(jù)(在這種情況下是開始新頁的指令)。
XML處理指令的另一個例子是XML-聲明(declaration)<?xml?>,這是最常用的過程指令。也稱為序言(prologue)的該XML-聲明出現(xiàn)在XML文檔的開始處以告知有關(guān)該文檔的一些重要信息。XML-聲明可以包含三段信息使用的XML的版本;使用的字符集;以及促使對文檔進(jìn)行解釋的文檔類型定義是被嵌入在文檔本身中還是被單獨(dú)的實體所包括(例如被單獨(dú)文件所包括)。
XML-聲明的示例是<?xml version=“1.0”encoding=“utf-8”standalone=“yes”?>。
根據(jù)該XML-聲明,所討論的文檔使用XML版本1.0和八位Unicode編碼(encoding=“utf-8”)。而且,它宣布文檔包括所有必要的文檔類型定義(standalone=“yes”),即文檔不使用任何外部文檔類型定義文件或者類似文件。然而,外部文檔類型定義文件或者類似文件優(yōu)選地與信息交換有關(guān),然而并不是先決條件。下面將更為詳盡地討論文檔類型定義(DTD)。然而應(yīng)該注意,還存在定義XML文檔的結(jié)構(gòu)的其它方式,例如通過使用所謂的XML模式。
聲明和文檔類型定義(DTD)在以上對XML文檔的概述中提到了處理指令,它被預(yù)定用于目標(biāo)應(yīng)用程序。預(yù)定用于XML處理器的另一個這種重要的指令是文檔類型聲明,其由關(guān)鍵字“DOCTYPE”來表示。如果使用文檔類型聲明,則它必須出現(xiàn)在根元素之前,即在文檔開始標(biāo)簽之前。一個簡單的文檔類型聲明是<!DOCTYPE mydocument>,它只標(biāo)識了根元素的名稱(mydocument)。使用更為復(fù)雜的變形來保持文檔類型定義(DTD)。當(dāng)使用這種DTD時,要用方括號將其包圍起來,例如<!DOCTYPE mydocument[!ELEMENT name(#PCDATA)]>
這里,文檔“mydocument”已被定義為具有一個單獨(dú)的元素,即元素“name”,其又被定義為具有“Parsable Character Data”。例如,“Parsable Character Data”可以是名稱“Smith”或者一些其它字符數(shù)據(jù)。此外,在這個例子中,DTD被結(jié)合在文檔“mydocument”中,即文檔使用內(nèi)部DTD。這對應(yīng)于XML聲明處理指令中的standalone=“yes”,即如上所述的序言。然而,外部DTD可以通過使用后面是相關(guān)文檔的根元素名稱的關(guān)鍵字“DOCTYPE”以及例如后面是外部文件或者類似文件的名稱的關(guān)鍵字“PUBLIC”來聲明。
說明外部DTD的聲明的示例可以是<!DOCTYPE start PUBLIC“http//www.internet.com/xml/definitions/start.dtd”>
這里,“start”是相關(guān)文檔的根元素,并且外部DTD位于在網(wǎng)址“http//www.internet.com/xml/definitions”處的名為“start.dtd”的文件中。關(guān)鍵字“PUBLIC”表示其它應(yīng)用程序可以訪問該DTD文件,如果若干應(yīng)用程序交換包括不同信息的XML文檔,則關(guān)鍵字“PUBLIC”會是優(yōu)選的,但根據(jù)在DTD中定義的結(jié)構(gòu)來配置。
考慮以上對XML文檔的概述,其中討論了元素、屬性、開始標(biāo)簽、結(jié)束標(biāo)簽、處理指令和引用,以及到目前為止有關(guān)聲明的討論,短的示例XML文檔可以是
<?xml version=″1.0″encoding=″utf-8″standalone=″no″?>.<!DOCTYPE start PUBLIC″http//www.internet.com/xml/definitions/start.dtd″><start><person keyaccount=″yes″>
<letter>&letterhead;</letter>
<lastname>Smith</lastname>
<firstname>John</firstname>
<age>45</age>
<phone>+46 31 7470000</phone></person></start>
定義上述示例的XML文檔的XML DTD可以是<!ENTITY letterhead″ACME Construction INC″>
<!ELEMENT start(person)>
<!ELEMENT person(letter,lastname,firstname,age,phone)>
<!ATTLIST person keyaccount(yes|no)#IMPLIED>
<!ELEMENT letter(#PCDATA)>
<!ELEMENT lastname(#PCDATA)>
<!ELEMENT firstname(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT phone(#PCDATA)>
在該DTD中,實體“l(fā)etterhead”已經(jīng)被分配了字符數(shù)據(jù)“ACMEConstruction INC”,其將代替在XML文檔中每次出現(xiàn)的實體引用“&letterhead”。根元素“start”已經(jīng)被定義為包括元素“person”,其中“person”已經(jīng)被定義為包括元素“l(fā)etter”、“l(fā)astname”、“firstname”、“age”和“phone”,以及這些元素又被定義為包括可解析的數(shù)據(jù)(#PCDATA)。另外,元素“person”已經(jīng)被定義為包括屬性“keyaccount”。該屬性又已經(jīng)由關(guān)鍵字“#IMPLIED”定義,所述關(guān)鍵字表示不需要向?qū)傩浴発eyaccount”提供值,而限定符(qualifier)“yes”和“no”表示如果向“keayaccount”提供了值,則它一定是“yes”或“no”而不是別的。
XML提供了對元素和屬性的幾個其它限制。例如,元素可以由定義了元素具體值(occurrence)的可選限定符“?”、“*”或“+”進(jìn)一步在DTD中定義。例如,屬性可以由可替換的限定符定義,所述限定符是CDATA、ID、IDREF、IDREFS、NMTOKEN或NMTOKENS,其定義了屬性可以采用的值的類型;以及是#FIXED、#REQUIRED或#IMPLIED,其定義了屬性值的具體值。所有這些限定符都被全部定義在XML規(guī)范之中,并且在這一點將不進(jìn)一步對它們進(jìn)行解釋。
而且,應(yīng)該強(qiáng)調(diào)的是,XML只是幾種標(biāo)記語言中的一種,并且文檔類型定義(DTD)或XML模式只是在標(biāo)記文檔或者類似文檔中定義信息結(jié)構(gòu)的幾種可能的方式中的示例。例如,正如先前所述的,SGML是另一種合適的標(biāo)記語言,而例如XHTML是類似XML的HTML發(fā)展版本。還存在其他的XML版本或者XML的擴(kuò)展,例如適于表示數(shù)學(xué)或化學(xué)表達(dá)式等。
結(jié)論可以看出,以上的示例XML文檔只包括在下面位置中的字符數(shù)據(jù)″letter″ =″ACME Construction INC″″person″ =″yes″″lastname″ =″Smith″″firstname″=″John″″age″ =″45″″phone″=″+46 31 7470000″字符數(shù)據(jù)中的信息另外可以表示為″ACME Construction INCyesSmithJohn4546 31 7470000″,其合計達(dá)48個字符,包括空格在內(nèi)。
然而,上述例子中的整個XML文檔包括多于300個字符,XML-聲明和DOCTYP-聲明包括在內(nèi)。此外,即使忽略XML-聲明和DOCTYP-聲明,示例XML文檔仍包括多于180個字符。顯然,XML文檔包括許多開銷(overhead)字符。而且,隨著XML文檔包括更多元素,即在上述示例中更多的“person”元素,開銷增加。實質(zhì)上是所有標(biāo)記文本的總和(例如元素和屬性等的名稱)引起了開銷。對于所有標(biāo)記語言來說這是相同的,這使它們不適于在低帶寬環(huán)境中進(jìn)行信息交換。因此,標(biāo)記文檔不適于在低帶寬環(huán)境中進(jìn)行信息交換。
然而,標(biāo)記語言通常提供如上所述的兩部分的解決方案。兩部分的解決方案通過考慮第一部分所定義的信息結(jié)構(gòu)來使分析器能夠?qū)⑵洳僮鬟m應(yīng)于第二部分所包括的交換信息。因此,分析器能夠保持不變,即使交換信息的結(jié)構(gòu)發(fā)生變化。這是有利的,因為它避免了困難且昂貴地重新編程分析器來適應(yīng)不同的信息結(jié)構(gòu)。
因此,需要有所改善以允許使用標(biāo)記語言或者類似的兩部分的解決方案來在低帶寬環(huán)境中交換信息。
專利US 6,510,434 B1示出一種使用XML標(biāo)簽和元文件的索引從數(shù)據(jù)庫檢索信息的系統(tǒng)和方法。
因此,與本發(fā)明相對比,該文獻(xiàn)沒有涉及信息壓縮,而無論信息是為文本文件、數(shù)據(jù)庫還是為某一其它存儲裝置所包括。
專利US 6,253,624 B1示出一種通過使用文件數(shù)據(jù)結(jié)構(gòu)并且基于塊數(shù)據(jù)類型為各個塊選擇壓縮而將相同數(shù)據(jù)類型的數(shù)據(jù)分組成塊的編碼網(wǎng)絡(luò)。根據(jù)該專利的優(yōu)選編碼網(wǎng)絡(luò)使用稱為基本-過濾-資源(Base-Filter-ResourceBRF)系統(tǒng)的體系結(jié)構(gòu)。該方法把對特定格式壓縮的優(yōu)勢結(jié)合在通用壓縮工具中,從而適用于大量的數(shù)據(jù)格式。源數(shù)據(jù)被解析為相似數(shù)據(jù)的塊,并且每個解析的塊是使用分別選擇的壓縮算法來壓縮的??梢詮臄?shù)據(jù)的靜態(tài)模型中選擇算法,或者算法能夠適應(yīng)于在解析塊中的數(shù)據(jù)。然后將解析塊組合成編碼的數(shù)據(jù)文件。特別地,系統(tǒng)優(yōu)選地包括一種用于將源數(shù)據(jù)分解成各個分量的方法。稱為“結(jié)構(gòu)翻轉(zhuǎn)(flipping)”的基本方法提供了將格式信息轉(zhuǎn)換為壓縮模型的關(guān)鍵(key)。結(jié)構(gòu)翻轉(zhuǎn)重新組織在文件中的信息以使通常分離的相似分量被集合在一起。
因此,作為本發(fā)明的該文獻(xiàn)公開了一種用于壓縮信息的方法。而且,可以如所描述的兩部分的解決方案來理解本專利。然而,如果是這種情況,那么兩部分的解決方案中的第一部分包括用于壓縮第二部分所包括的信息的密鑰。換句話說,本專利能夠被理解為兩部分的解決方案,于是在該兩部分的解決方案中的第一部分不包括第二部分所包括的信息的結(jié)構(gòu)定義。尤其是,本專利所公開的密鑰不包括標(biāo)記文檔中所包括的信息的結(jié)構(gòu)定義。特別地,本專利沒有描述一種適于使用兩部分解決方案來壓縮標(biāo)記文檔等等的壓縮。
發(fā)明內(nèi)容
因為由標(biāo)記語言和標(biāo)記文檔等實現(xiàn)的兩部分的解決方案不適于在低帶寬環(huán)境中交換信息,這是由于主要由標(biāo)記文本等引起的開銷信息,所以需要一種最小化開銷信息的簡單且不復(fù)雜的解決方案。因此,本發(fā)明優(yōu)選實施例的主要目的在于提供一種壓縮方法和裝置,尤其(但不唯一)用于標(biāo)記數(shù)據(jù)。因此,本發(fā)明的優(yōu)選實施例公開一種通過使用兩部分解決方案中的第一定義部分來為第一部分中定義的標(biāo)記層次產(chǎn)生短碼以最小化開銷的方式,該短碼用于替換在第二部分中的標(biāo)記文本。
本發(fā)明的其它優(yōu)點是-提供小應(yīng)用程序(slim application)和獨(dú)立于數(shù)據(jù)形式密鑰的傳輸介質(zhì),其能夠用于將數(shù)據(jù)包編碼為更小的尺寸;-提供高級應(yīng)用程序,其具有小的解決方案以通過低帶寬網(wǎng)絡(luò)傳輸數(shù)據(jù),或者從具有較高容量的網(wǎng)絡(luò)傳輸數(shù)據(jù)到具有較低容量的網(wǎng)絡(luò);-提供數(shù)據(jù)壓縮器/解壓縮器解決方案,該解決方案是獨(dú)立的應(yīng)用程序和平臺,其中能夠從遠(yuǎn)程的應(yīng)用程序和平臺獨(dú)立地開發(fā)本地的應(yīng)用程序和平臺。
特別地,本發(fā)明的優(yōu)選實施例提供一種基于兩部分解決方案的方法,用于壓縮具有標(biāo)記層次的大量信息,其中第一部分包括信息結(jié)構(gòu)的定義,以及第二部分包括根據(jù)在第一部分中定義的結(jié)構(gòu)所配置的信息。此外,第一部分中定義的標(biāo)記層次能夠被分配代碼,并且在第二部分中的標(biāo)記層次可由與特定標(biāo)記層次對應(yīng)的代碼所代替。
因此,根據(jù)優(yōu)選實施例的本發(fā)明提供一種用于壓縮具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分的數(shù)據(jù)集的方法。數(shù)據(jù)集是根據(jù)定義部分進(jìn)行配置的。該方法包括以下步驟至少為所述數(shù)據(jù)部分分配具有比所述第一值更少值的代碼,用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分,并且產(chǎn)生壓縮的數(shù)據(jù)集。根據(jù)一個實施例,標(biāo)記層次指的是包括第二標(biāo)記層次的引用,其被解析并被分配代碼。每個代碼是唯一的并允許有效的壓縮。優(yōu)選地,替換在所述數(shù)據(jù)集中的標(biāo)記層次的每個代碼被分配一個由所述標(biāo)記層次指示的值。根據(jù)另一個優(yōu)選實施例,替換在所述數(shù)據(jù)集中的標(biāo)記層次的代碼被分配一個值,該值被由所述標(biāo)記層次所指示的引用所包括。由所述數(shù)據(jù)集中的標(biāo)記層次指示的值可以是在所述數(shù)據(jù)集中定義的有限值集合中的一個,其中每個值被分配了替換所述數(shù)據(jù)集中的所述值的代碼,或者在所述數(shù)據(jù)集中的標(biāo)記層次所指示的值是數(shù)字,并由數(shù)值表示來替換。最優(yōu)選地,定義部分是文檔類型定義(DTD)或XML模式,并且所述數(shù)據(jù)集是標(biāo)記文檔;因此允許使用通??捎玫某煞?。最優(yōu)選地,標(biāo)記文檔是根據(jù)諸如XML、SGML之類的標(biāo)記語言進(jìn)行構(gòu)建的。
本發(fā)明也涉及一種將數(shù)據(jù)集從第一應(yīng)用程序傳送到第二應(yīng)用程序的方法。該數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分。該數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的。該方法包括以下步驟產(chǎn)生代碼集作為壓縮密鑰來定義在所述定義部分中所定義的所述數(shù)據(jù)部分,其中代碼具有比所述第一值更少的值,存儲所述代碼集,至少為所述標(biāo)記層次分配所述集合的代碼,用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集,并將所述壓縮數(shù)據(jù)集和所述代碼集傳送到所述第二應(yīng)用程序。最優(yōu)選地,但依據(jù)網(wǎng)絡(luò)協(xié)議,代碼集和所述壓縮數(shù)據(jù)是以包傳送的。一個包至少包括消息類型字段、發(fā)送接收應(yīng)用程序標(biāo)識字段、壓縮密鑰和壓縮數(shù)據(jù)。一個包還可以包括消息版本字段,并包含被發(fā)送到用于處理密鑰壓縮的壓縮處理器的信息。壓縮密鑰與相對于所述壓縮密鑰而壓縮的每個壓縮數(shù)據(jù)傳輸一起被傳輸一次或多次。傳輸可以通過對壓縮密鑰進(jìn)行壓縮而進(jìn)一步增強(qiáng)。壓縮數(shù)據(jù)是在附加步驟中進(jìn)行壓縮的,從而進(jìn)一步增強(qiáng)了傳輸率。
本發(fā)明還涉及一種用于在至少兩個站(station)之間進(jìn)行數(shù)據(jù)傳輸?shù)南到y(tǒng),所述數(shù)據(jù)包括依據(jù)任一前述權(quán)利要求的壓縮數(shù)據(jù)集。該系統(tǒng)包括壓縮部分,其包括用于啟動壓縮過程的壓縮處理器;用于產(chǎn)生和處理與代碼對應(yīng)的密鑰的密鑰處理器;用于處理產(chǎn)生的密鑰的存儲的存儲設(shè)備;用于實施第一步驟以對要利用密鑰進(jìn)行壓縮的數(shù)據(jù)集進(jìn)行編碼的轉(zhuǎn)換器;用于實施第二步驟以優(yōu)化要被壓縮的數(shù)據(jù)集的優(yōu)化器;用于實施壓縮本身的第三步驟的壓縮器。傳輸部分包括用于處理所有通信的傳輸器,相對于包產(chǎn)生消息以用于傳輸和接收的的包處理器,用于收聽(listen)數(shù)據(jù)傳輸?shù)慕涌凇T撓到y(tǒng)進(jìn)一步包括壓縮密鑰處理器、壓縮文檔處理器、非壓縮數(shù)據(jù)集處理器以及協(xié)議處理器。傳輸部分處理唯一的應(yīng)用程序標(biāo)識的產(chǎn)生,因此接收器能夠識別輸入數(shù)據(jù)以及還有具有唯一標(biāo)識的密鑰。
本發(fā)明還涉及一種機(jī)器可讀的并且編碼用于壓縮數(shù)據(jù)集的程序的程序存儲設(shè)備,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的。所述程序包括用于至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
本發(fā)明還涉及一種計算機(jī)可讀程序代碼裝置,用于使計算機(jī)壓縮數(shù)據(jù)集,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的。該計算機(jī)可讀程序代碼裝置包括用于至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
根據(jù)本發(fā)明提供一種產(chǎn)品,其包括計算機(jī)可用介質(zhì),該計算機(jī)可用介質(zhì)具有在其中包括的用于進(jìn)行數(shù)據(jù)集的壓縮的計算機(jī)可讀程序代碼裝置,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的。在所述產(chǎn)品中的所述計算機(jī)可讀程序代碼裝置包括用于至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
本發(fā)明還涉及一種包括計算機(jī)可讀程序代碼裝置的傳播信號,該程序代碼裝置用于進(jìn)行數(shù)據(jù)集的壓縮,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的。在所述傳播信號中的所述計算機(jī)可讀程序代碼裝置包括用于至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
本發(fā)明還涉及一種具有在其中存儲的協(xié)議的計算機(jī)可讀介質(zhì),所述協(xié)議具有多個用于從遠(yuǎn)程應(yīng)用程序中獲取壓縮數(shù)據(jù)的消息。所述協(xié)議包括用于接收一組壓縮數(shù)據(jù)集的請求消息,用于接收用來壓縮所述壓縮數(shù)據(jù)集的代碼集的請求,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分,包括所述壓縮數(shù)據(jù)和所述代碼的響應(yīng),包括應(yīng)用程序的標(biāo)識和代碼的唯一標(biāo)識的響應(yīng)。
根據(jù)一個方面,提供一種通信系統(tǒng),該通信系統(tǒng)包括控制第二單元通過通信網(wǎng)絡(luò)進(jìn)行通信的第一單元。第一單元發(fā)送具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分的數(shù)據(jù)集。該數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的。所述系統(tǒng)進(jìn)一步包括壓縮單元和解壓縮單元。壓縮單元被配置為至少為所述數(shù)據(jù)部分分配具有比所述第一值更少值的代碼,用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集。第一單元可以是移動臺、移動電話、掌上型計算機(jī)(palm sizecomptuer)、計算機(jī)等的任何一個。第一單元可以是遠(yuǎn)程控制或監(jiān)控設(shè)備。第二單元可以是遠(yuǎn)程受控裝置,例如機(jī)器人、車輛和導(dǎo)彈。
現(xiàn)在將參考附圖更詳細(xì)地描述本發(fā)明的優(yōu)選實施例,其中圖1是說明傳輸根據(jù)本發(fā)明一個優(yōu)選實施例壓縮的數(shù)據(jù)的數(shù)據(jù)通信系統(tǒng)的塊的流程圖,圖2示出了示例XML文檔及其相關(guān)文檔類型定義(DTD)的表格,補(bǔ)充了示例的和相關(guān)的壓縮密鑰以及示例的和相關(guān)的壓縮結(jié)果。
圖3是說明壓縮步驟的流程圖,圖4是說明密鑰產(chǎn)生步驟的流程圖,圖5是說明根據(jù)本發(fā)明的示例系統(tǒng)的類層次的框圖,圖6a-6c說明根據(jù)本發(fā)明一個實施例的消息包字段,以及圖7是說明根據(jù)本發(fā)明一個優(yōu)選實施例的示例性應(yīng)用程序的框圖。
具體實施例方式
以下將參考XML數(shù)據(jù)集以示例的方式描述優(yōu)選實施例。然而應(yīng)該理解,本發(fā)明并不限于XML,其它標(biāo)記語言也可以使用。
現(xiàn)在參考圖1和2來描述本發(fā)明的主要步驟。假設(shè)應(yīng)用程序1想要將圖2中的XML數(shù)據(jù)集“MARKUP DOCUMENT”(i)發(fā)送到通信網(wǎng)絡(luò)100中的應(yīng)用程序2。應(yīng)用程序1調(diào)用根據(jù)本發(fā)明的壓縮器過程在將數(shù)據(jù)發(fā)送到應(yīng)用程序2之前將其壓縮。
根據(jù)本發(fā)明的優(yōu)選實施例,第一步驟(1)是使用DTD(ii)或XML模式或某一其它定義部分來產(chǎn)生密鑰(iii),該密鑰包括根據(jù)定義部分所允許的基本上所有標(biāo)記的短碼。下面更為詳細(xì)地描述密鑰產(chǎn)生過程。產(chǎn)生的密鑰被存儲(2)在存儲設(shè)備10(例如在這種情況下被實現(xiàn)為數(shù)據(jù)庫)中,并且接著用于第二步驟,以用在密鑰中存儲的短碼來替換在相關(guān)標(biāo)記文檔中的所有標(biāo)記或者包括從應(yīng)用程序1接收的部分的一些其它信息。壓縮結(jié)果被公開在圖2(iv)中。通過這種方式將明顯減小標(biāo)記文檔的大小。此外,文檔大小可以在幾個步驟中減小。壓縮文檔和密鑰都被返回(3)到應(yīng)用程序1,其通過網(wǎng)絡(luò)100將它們發(fā)送(5)到應(yīng)用程序2??梢岳脗鬏敶韥韺崿F(xiàn)(4)傳輸。以下將更詳細(xì)地描述傳輸代理。而且,應(yīng)用程序1可以啟動對標(biāo)記文檔的壓縮以將文檔發(fā)送至應(yīng)用程序2、或者由應(yīng)用程序2從應(yīng)用程序1檢索文檔。存儲設(shè)備可以被實施在應(yīng)用程序1的網(wǎng)絡(luò)之中的任何位置;它也可以被定位以使兩個應(yīng)用程序都能訪問該存儲設(shè)備以獲取密鑰和DTD文件。
當(dāng)然,應(yīng)用程序2可以通過訪問存儲設(shè)備(6)來獲取密鑰。因此,存儲設(shè)備可以是企業(yè)內(nèi)部互聯(lián)網(wǎng)、因特網(wǎng)、通信網(wǎng)絡(luò)或通信設(shè)備的一部分。密鑰可以被自動傳輸(下面描述),從存儲設(shè)備中進(jìn)行檢索或者在使用公用DTD的第二應(yīng)用程序中產(chǎn)生。
圖3說明以輸入300要壓縮的文檔開始的壓縮過程。在第一步驟中,密鑰是從存儲設(shè)備305輸入的。
結(jié)合對圖4的流程圖的說明來更為詳細(xì)地描述密鑰產(chǎn)生過程。壓縮開始于檢查310要壓縮的文檔/數(shù)據(jù)集,于是使用320所述密鑰來壓縮文檔。該過程通過尋找與密鑰對應(yīng)的信息來瀏覽330文檔。如果發(fā)現(xiàn)字符代碼,則用新代碼代替340并插入350到壓縮文檔中。否則將發(fā)現(xiàn)的數(shù)據(jù)(即值)插入到壓縮文檔中。執(zhí)行該過程直到搜索了整個文檔。
在一些應(yīng)用程序中,可以使用DTD、XML模式或者別的類似或有關(guān)的定義部分來直接壓縮相關(guān)的標(biāo)記文檔而不使用密鑰。然而,如果DTD或者某一其它定義部分用于直接壓縮標(biāo)記文檔,那么壓縮密鑰必須是在任何壓縮之前從定義部分中提取的。這是尤其費(fèi)時的,并且信息交換中的延遲通常被認(rèn)為是缺點,尤其是在實時應(yīng)用中交換信息的時候。
為了實現(xiàn)壓縮標(biāo)記文檔的交換,必須分配所產(chǎn)生的壓縮密鑰,所述壓縮密鑰必須由接收器使用以解壓縮文檔。第一次當(dāng)相關(guān)文檔被發(fā)送到特定接收器時,所討論的密鑰可以被發(fā)送。接收器可選擇地要求來自發(fā)送器的密鑰,例如如果接收器已經(jīng)丟失密鑰或者如果密鑰的原始傳輸并不成功。
而且,密鑰必須用唯一的標(biāo)識來標(biāo)記以使接收器能夠挑選與接收的將要解壓縮的文檔相關(guān)的正確的壓縮密鑰。存在若干方式來標(biāo)記密鑰,并且在這一點的一種可能性是在定義部分中即在DTD或XML模式之類中設(shè)置標(biāo)識。這使系統(tǒng)(例如XML解析器或密鑰產(chǎn)生器)能夠檢查特定定義部分和特定標(biāo)記文檔包括相同的標(biāo)識,其中相同的標(biāo)識意味著定義的部分能夠用于產(chǎn)生壓縮密鑰來壓縮所討論的文檔。重要的是,密鑰標(biāo)識在其中密鑰和相關(guān)的壓縮文檔要進(jìn)行交換的環(huán)境中是唯一的。被設(shè)計成產(chǎn)生具有足夠低重復(fù)性的數(shù)字的隨機(jī)算法是用于產(chǎn)生標(biāo)識的一個替代。
密鑰產(chǎn)生圖4說明顯示產(chǎn)生400密鑰的主要步驟的流程圖。密鑰產(chǎn)生開始于控制405密鑰是否存在。對密鑰的搜索可以在存儲設(shè)備或公用數(shù)據(jù)庫中進(jìn)行,或者可以將請求發(fā)送至第二應(yīng)用程序以用于提供DTD。如果密鑰不存在,那么獲取410DTD并使用解析器420,其使用例如獲取的DTD(或XML模式)來產(chǎn)生密鑰。接著將密鑰返回430(和/或存儲以用于隨后的訪問)至壓縮器過程。在步驟400,如果例如通過仔細(xì)檢查存儲設(shè)備索引而檢測到密鑰存在,那么從存儲設(shè)備中獲取440密鑰并返回450至應(yīng)用程序。
參考圖2,可以通過將新代碼分配給在標(biāo)記文檔中的標(biāo)記來產(chǎn)生壓縮密鑰。代碼可以包含替換標(biāo)記的原始名稱的一個或多個字符。圖2中的示例DTD包含元素start、vehicle、head、status、doors和speed。然而,元素start和vehicle包含其它元素,即它們不包含任何字符數(shù)據(jù)。因此,如果start和vehicle被分配一個新的單個代碼則不會丟失信息。然而,如果一些元素(如這個例子中的元素vehicle)包括一個或多個屬性,那么優(yōu)選地屬性信息應(yīng)該被保留。
結(jié)果就是包含值(字符數(shù)據(jù))的那些標(biāo)記將被分配新代碼。換句話說,每個新代碼對應(yīng)一直引到特定值的相應(yīng)標(biāo)記的名稱,即指在特定值上的標(biāo)記的鏈或?qū)哟?。然而?yīng)該注意,即使一種方法或系統(tǒng)等沒有將代碼分配給在DTD等中定義的指在特定值上的每個標(biāo)記層次,但它也仍在本發(fā)明的主題之內(nèi)。
正如在圖2中可看到的,壓縮密鑰開始于<XMLKey>,它只指出這是壓縮密鑰。這個介紹之后是<info>元素,該元素包括具有值(未在示例DTD和示例標(biāo)記文檔中示出)的<KeyID>元素,該值標(biāo)識與某一DTD和某一標(biāo)記文檔相關(guān)的密鑰。應(yīng)該強(qiáng)調(diào)的是,這是個例子,并且壓縮密鑰可以在不背離本發(fā)明的情況下具有許多其它序言和/或更為擴(kuò)展的序言。
序言后面是幾個<item>元素,該元素又包括元素<code>、<name>、<type>和<format>?,F(xiàn)在在下面將詳細(xì)地描述這些元素。
<code>元素包含新的替換代碼,所述代碼具有比原始代碼更少的二進(jìn)制大小,其中四個新代碼“a”、“b”、“c”和“d”是根據(jù)圖2中的示例產(chǎn)生的。第一代碼“a”對應(yīng)于標(biāo)記名稱“start”、“vehicle”和“ok”,其在標(biāo)記文檔中指在值“yes”上。第二代碼“b”對應(yīng)于標(biāo)記名稱“start”、“vehicle”和“doors”,其在標(biāo)記文檔中指在值“l(fā)ocked”上,以及第三代碼“c”對應(yīng)于名稱“start”、“vehicle”和“speed”,其在標(biāo)記文檔中指在值“95”上。第四代碼“d”對應(yīng)于標(biāo)記名稱“start”、“vehicle”和“head”,其指在實體引用“&lable”上。
正如從圖2中可看到的,壓縮密鑰包括<name>元素,該元素包含與由前面的<code>元素所包含的代碼對應(yīng)的所有標(biāo)記名稱。換句話說,在<name>元素中的標(biāo)記名稱已被分配了由前面的<code>元素所包括的代碼。
應(yīng)該強(qiáng)調(diào)的是,代碼“a”、“b”、“c”和“d”只是可能的代碼的示例??梢允褂闷渌a,并且代碼可以包含所有可能的符號、字符和值。然而,在一些應(yīng)用程序中一些限制可能是必要的,例如其為了預(yù)定目的而使用特殊字符。然而,代碼應(yīng)該優(yōu)選為唯一的,即代碼應(yīng)該優(yōu)選為在某一壓縮密鑰中僅僅出現(xiàn)一次。其它解決方案是可以想到的但不是優(yōu)選的。例如,可以在壓縮和/或解壓縮算法中實施某種邏輯,其例如通過考慮壓縮密鑰的結(jié)構(gòu)而能夠區(qū)分相同的代碼。然而,這種邏輯會使壓縮和/或解壓縮變復(fù)雜,因此它不是優(yōu)選的。
此外,壓縮密鑰應(yīng)該優(yōu)選地包括使壓縮的標(biāo)記文檔的接收器能夠解壓縮該文檔的信息。在上例中,這是通過提供<type>元素而實現(xiàn)的,其中該元素指定了標(biāo)記的類型,例如屬性、元素和引用。有關(guān)由代碼所指示的值的格式的信息已通過提供<format>元素來實現(xiàn),其中該元素指定值的格式,例如串和整數(shù)。
然而,以上伴隨代碼的信息只是可能的信息的示例,所述信息使得能夠?qū)嚎s的標(biāo)記文檔進(jìn)行解壓縮。在一些應(yīng)用程序中會需要更多和/或其它信息。
壓縮如上所述的壓縮密鑰或者其它類似或相關(guān)密鑰可以用于壓縮和解壓縮標(biāo)記文檔。壓縮的標(biāo)記文檔又可以被構(gòu)建為標(biāo)記文檔,例如XML文檔。在壓縮的文檔中保持標(biāo)記結(jié)構(gòu)具有的優(yōu)點在于,它使解析器(例如XML解析器)能夠檢查和解析壓縮的文檔。這在例如直接使用壓縮的文檔即沒有任何解壓縮的一些應(yīng)用程序中是優(yōu)選的。
以上標(biāo)記文檔的標(biāo)記類型壓縮的例子可以是<start a=“yes”b=“l(fā)ocked”c=“95”d=“Motor Vehicle”/>
根據(jù)XML規(guī)范,該結(jié)構(gòu)對應(yīng)于空元素。在該例子中“start”(即標(biāo)記文檔的根元素)已被選擇來表示空元素的名稱,而“a”、“b”、“c”和“d”表示空元素的屬性。應(yīng)該注意的是,字母“start”也可以被壓縮和替換,例如由字母“s”或某一其它唯一的代碼。
正如根據(jù)圖2從壓縮密鑰中的<name>元素可推導(dǎo)出的,通過利用代碼“a”替換元素“start”、“vehicle”和屬性“ok”來執(zhí)行壓縮。同樣地,代碼“b”已經(jīng)替換了元素“start”、“vehicle”和“doors”,而代碼“c”已經(jīng)替換了元素“start”、“vehicle”和“speed”,以及代碼“d”已經(jīng)替換了元素“start”、“vehicle”和“head”。
此外,代碼“a”已被分配了值“yes”,這是由與代碼“a”對應(yīng)的元素和屬性所指示的值。同樣代碼“b”和“c”已被分別分配了值“l(fā)ocked”和“95”,這是由分別與代碼“b”和“c”對應(yīng)的元素所指示的值。
剩余的代碼“d”不同于前面的代碼“a”、“b”和“c”,因為代碼“d”不指示任何值,至少不直接指示。代之以,在這個例子中與代碼“d”對應(yīng)的元素一直引到在標(biāo)記文檔中的實體引用,即實體引用“&lable”。所指示的引用只表示應(yīng)該插入來替換在標(biāo)記文檔中的引用的值。因此,壓縮文檔中的引用必須由其表示的值來替換,在這個例子中是“Motor Vehicle”。
一些標(biāo)記語言可以支持比在這個例子中說明的簡單引用更為復(fù)雜的引用。例如,一個引用又可以指向另一個引用,該引用表示應(yīng)該替換在標(biāo)記文檔中的原始引用的值。于是在壓縮的標(biāo)記文檔中的相關(guān)代碼應(yīng)該優(yōu)選地被分配將代替在標(biāo)記文檔中的原始引用的值。引用也可以指向例如在DTD等之內(nèi)預(yù)先定義的全部元素。所指向的元素應(yīng)該于是優(yōu)選地被解析和分配代碼,其中元素所包括的可能值優(yōu)選地應(yīng)該被分配給該代碼。如果引用的鏈繼續(xù),那么優(yōu)選地應(yīng)該重復(fù)相同的解析過程。
進(jìn)一步壓縮盡管到目前為止所討論的壓縮能夠產(chǎn)生標(biāo)記字符串,例如串“<start a=“yes”b=“l(fā)ocked”c=“95”d=“Motor Vehicle”/>”,但是通過替換空格和其它中間字符甚至可以進(jìn)一步來執(zhí)行壓縮。
例如串“<start a=“yes”b=“l(fā)ocked”c=“95”d=“Motor Vehicle”/>”可以由串“a<yes>b<locked>c<95>d<Motor Vehicle>”來表示。
正如可看到的,該壓縮串不對應(yīng)依據(jù)XML標(biāo)準(zhǔn)的空元素,這意味著標(biāo)記格式已被放棄了?!皊tart”標(biāo)簽已被刪除,并且引號和等號(=”)已由“<”字符替換,而引號和空白字符(”)已由“>”字符替換。另外,如果正如在這個例子中開始和結(jié)束符號都被刪除了,那么有必要提供其它開始和結(jié)束符號來將壓縮文檔從其它壓縮文檔或者更一般地從其它傳輸?shù)臄?shù)據(jù)中分離出來。這可以以許多方式來實現(xiàn),例如通過在壓縮部分中的壓縮處理器(510),或者通過在傳輸部分中的包處理器(555)。
此外,能夠進(jìn)一步壓縮只可以采用有限集合的預(yù)定值中的一個的變量等。例如,屬性“ok”已由關(guān)鍵字“#IMPLIED”定義,其具有兩個限定符“yes”和“no”,它表示如果屬性“ok”的確在標(biāo)記文檔中被提供了值,那么它一定是“yes”或“no”。換句話說,屬性“ok”可以具有三個狀態(tài),即“yes”、“no”或者什么也沒有。更一般的解釋是,象“ok”之類的屬性可以被分配有限集合的預(yù)定值中的一個,即屬性“A”例如可以被分配在有限集合{a,b,c,d}中的值。該預(yù)先的知識能夠用于壓縮屬性值,尤其是因為這種值可以具有比這個例子中的簡單“yes”和“no”更多的字符。一種解決方案是只向壓縮密鑰提供信息,該信息顯示屬性的第一允許值應(yīng)該由數(shù)字1替換,第二允許值應(yīng)該由數(shù)字2替換等等。在根據(jù)圖1的例子中的屬性“ok”的可能值“yes”和“no”可以分別由數(shù)字“1”和“2”替換。這意味著圖2中的代碼“a”可以被分配“1”來替換“yes”,被分配“2”來替換“no”,以及被分配“3”來替換空格值。然而,空格值可以作為替換而被省略。
而且,代碼“c”已被分配了由在標(biāo)記文檔中的相應(yīng)“speed”元素所包括的字符“95”。根據(jù)在圖2中的例子,這對應(yīng)于整數(shù)值95,其被設(shè)想為表示車輛的速度。根據(jù)信息交換領(lǐng)域所使用的大多數(shù)字符集,字符的表示通常需要至少一個字節(jié)(8個1和/或0),而一個字節(jié)可以表示十進(jìn)制的整數(shù)29-1=255。如果需要兩個字符來表示數(shù)字,那么這些字符占用兩個字節(jié)(16個1和/或0),而兩個字節(jié)可以表示十進(jìn)制整數(shù)217-1=65535。這意味著用整數(shù)、浮點數(shù)或某一其它數(shù)字表示來替換表示數(shù)字的字符是有利的。
根據(jù)本發(fā)明最佳模式的壓縮器能夠被實現(xiàn)為圖5的框圖中所說明的類結(jié)構(gòu)。從應(yīng)用程序500的角度來看,產(chǎn)生了壓縮部分和傳輸部分。密鑰編碼和壓縮是在壓縮部分執(zhí)行的,而壓縮信息包的建立和傳輸是在傳輸部分內(nèi)執(zhí)行的。
在壓縮部分-壓縮處理器510啟動壓縮過程,并且應(yīng)用程序利用該類來處理所有壓縮;-密鑰處理器520產(chǎn)生并處理密鑰;-數(shù)據(jù)庫或另一存儲設(shè)備525處理所產(chǎn)生密鑰的存儲。
-轉(zhuǎn)換器530實施轉(zhuǎn)換中的第一步驟,即利用密鑰編碼要被壓縮的數(shù)據(jù);
-優(yōu)化器535實施轉(zhuǎn)換中的第二步驟,即優(yōu)化要被壓縮的數(shù)據(jù)集。
在XML文檔的情況下,放棄文檔的結(jié)構(gòu)。
-壓縮器540實施第三步驟,即壓縮本身。
根據(jù)要求和需要,最后提到的三個執(zhí)行步驟能夠以多種方式來實現(xiàn)。
在傳輸部分-傳輸550是處理所有通信相關(guān)問題的抽象類;-包處理器555產(chǎn)生關(guān)于包(570)的消息以用于傳輸和接收。
-傳輸收聽器560是用于收聽數(shù)據(jù)傳輸(尋找所尋址的數(shù)據(jù)包)的接口還存在多個幫助類,例如需要它們用于存儲和傳輸在網(wǎng)絡(luò)上的數(shù)據(jù)。它們是壓縮密鑰575、壓縮文檔580、原始文檔585和協(xié)議590。
傳輸正如早先所提到的,根據(jù)本發(fā)明的優(yōu)選實施例,傳輸代理(圖1)可以在傳輸壓縮數(shù)據(jù)時被使用。圖5說明傳輸處理的主要部分。
所有要被發(fā)送的數(shù)據(jù)由應(yīng)用程序500存儲在類型包570的包中。接著包由包處理器555進(jìn)行處理,在其中產(chǎn)生了將要在應(yīng)用程序之間傳輸?shù)南?。接著發(fā)送應(yīng)用程序例如通過HTTP或TCP網(wǎng)絡(luò)接口(socket)發(fā)送包。
要發(fā)送的消息能夠具有不同的外觀。圖6a-6c說明了三個例子。
這些是用于傳送密鑰請求、密鑰和數(shù)據(jù)的。在輸入消息中頭四個字段用于傳輸部分,以及剩余字段由壓縮處理器510進(jìn)行處理。
這些字段可以以下面的方式進(jìn)行使用版本(Vers)包含消息格式的版本;類型(Type)包含消息的類型,即密鑰請求、密鑰或數(shù)據(jù);本地應(yīng)用程序ID(Local Appl.ID)包含本地(發(fā)送)應(yīng)用程序標(biāo)識;遠(yuǎn)程應(yīng)用程序ID(Remote Appl.ID)包含遠(yuǎn)程(接收)應(yīng)用程序標(biāo)識;密鑰ID(Key ID)包含與數(shù)據(jù)或密鑰聯(lián)系的密鑰的標(biāo)識;信息(Info)包含被發(fā)送到壓縮處理器510的信息,例如密鑰是否被壓縮;
密鑰(Key)包含用于壓縮數(shù)據(jù)的密鑰;它能夠依據(jù)Info的內(nèi)容而被壓縮或不被壓縮;數(shù)據(jù)(Data)包含數(shù)據(jù)(例如壓縮的XML文檔),其依據(jù)Info的內(nèi)容而被壓縮或不被壓縮;除了Data和Key以外,每個字段都可以是數(shù)字位,該數(shù)字位顯然必須具有不同的大小。應(yīng)該理解的是,依據(jù)要求和需要可以使用其它字段和包。
傳輸部分處理唯一應(yīng)用程序ID的產(chǎn)生。優(yōu)選地,使用本發(fā)明的壓縮過程的每個應(yīng)用程序都需要應(yīng)用程序ID,這樣傳輸部分就能夠處理幾個不同的應(yīng)用程序。原因在于接收應(yīng)用程序應(yīng)該優(yōu)選地例如基于應(yīng)用程序標(biāo)識來識別輸入數(shù)據(jù)以及還有具有唯一標(biāo)識的密鑰。
正如從以上所顯示的,密鑰和發(fā)送的數(shù)據(jù)都能夠被壓縮。另外,密鑰和壓縮數(shù)據(jù)能夠利用用于壓縮任何數(shù)據(jù)的常見壓縮技術(shù)來壓縮。事實上,如上所述的壓縮過程能夠使用初始檢查來查明是否值得利用如所述的密鑰壓縮技術(shù)來壓縮數(shù)據(jù)。這一點的基礎(chǔ)可以基于例如值和標(biāo)簽的數(shù)量。如果值的數(shù)量大于標(biāo)簽,則沒有必要執(zhí)行根據(jù)本發(fā)明的壓縮,而只可以執(zhí)行普通的壓縮。然而,在根據(jù)本發(fā)明的壓縮之后要傳送的數(shù)據(jù)集(以及產(chǎn)生的密鑰)可以進(jìn)一步利用普通的壓縮方法來壓縮,所述普通的壓縮方法例如是PKZIP、Huffman編碼、Lempel-Ziv編碼、BSTW、Shannon-Fano等。
最后,基于接收的或者預(yù)先存儲的密鑰的接收應(yīng)用程序通過反向壓縮步驟來解壓縮所接收的壓縮的數(shù)據(jù)集。
表1公開的下面的例子說明本發(fā)明的有效的壓縮方法。該測試是基于通過GPRS(通用分組無線電業(yè)務(wù))來傳送數(shù)據(jù)。起始數(shù)據(jù)是XML文檔。
表1
本發(fā)明可以被實現(xiàn)為硬件和/或軟件解決方案;可以在指令集存儲器中執(zhí)行的軟件、傳播信號等。
在下面參考圖7所說明的示例實施方案700來描述本發(fā)明。
根據(jù)該例子,應(yīng)用程序1 710將數(shù)據(jù)集傳送至應(yīng)用程序2 720。應(yīng)用程序1例如可以是移動臺(例如移動電話)、掌上型計算機(jī)、計算機(jī)等中的任何一個,其例如用作遠(yuǎn)程控制或監(jiān)控設(shè)備。應(yīng)用程序2可以是遠(yuǎn)程受控裝置,例如機(jī)器人、車輛、導(dǎo)彈等。應(yīng)用程序1與應(yīng)用程序2通過具有低帶寬的網(wǎng)絡(luò)730進(jìn)行通信。應(yīng)用程序1還通過具有高帶寬的網(wǎng)絡(luò)740進(jìn)行通信。
根據(jù)該例子,應(yīng)用程序1以XML文檔的形式將控制消息發(fā)送至應(yīng)用程序1。來源于應(yīng)用程序1的消息通過傳輸路由器750進(jìn)行路由,這取決于所尋址的目的地、被發(fā)送到正確目的地的消息。發(fā)送至應(yīng)用程序2的XML文檔通過壓縮單元760,如早先所述,該壓縮單元壓縮文檔并經(jīng)由低帶寬網(wǎng)絡(luò)730將其發(fā)送至應(yīng)用程序2。在應(yīng)用程序2接收其之前,解壓縮單元770解壓縮所壓縮的文檔。
例如,如果響應(yīng)消息從應(yīng)用程序2被發(fā)送回到應(yīng)用程序1,那么壓縮和解壓縮單元以相反的方式運(yùn)行,即解壓縮單元770壓縮消息,而解壓縮單元760解壓縮消息。
本發(fā)明不應(yīng)該被認(rèn)為限于上述的優(yōu)選實施例,而是包括由所附權(quán)利要求書限定的范圍所覆蓋的所有可能的變形。
權(quán)利要求
1.一種用于壓縮數(shù)據(jù)集的方法,該數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是根據(jù)定義部分進(jìn)行配置的,該方法包括以下步驟·至少為所述數(shù)據(jù)部分分配具有比所述第一值更少值的代碼,·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分,并且產(chǎn)生壓縮的數(shù)據(jù)集。
2.根據(jù)權(quán)利要求1所述的方法,其中所述標(biāo)記層次是指包括第二標(biāo)記層次的引用,其被解析并被分配代碼。
3.根據(jù)權(quán)利要求1所述的方法,其中每個代碼是唯一的。
4.根據(jù)任一前述權(quán)利要求所述的方法,其中替換在所述數(shù)據(jù)集中的標(biāo)記層次的每個代碼被分配一個由所述標(biāo)記層次指示的值。
5.根據(jù)權(quán)利要求1所述的方法,其中替換在所述數(shù)據(jù)集中的標(biāo)記層次的代碼被分配一個值,該值被由所述標(biāo)記層次指示的引用所包括。
6.根據(jù)權(quán)利要求4或5之一所述的方法,其中由在所述數(shù)據(jù)集中的標(biāo)記層次指示的值是在所述數(shù)據(jù)集中定義的有限集合的值中的一個,其中每個值被分配一個替換在所述數(shù)據(jù)集中的所述值的代碼。
7.根據(jù)權(quán)利要求4或5中任何一項所述的方法,其中由在所述數(shù)據(jù)集中的標(biāo)記層次所指示的值是數(shù)字,并且由數(shù)值表示來替換。
8.根據(jù)權(quán)利要求1所述的方法,其中所述定義部分是文檔類型定義(DTD)或XML模式,并且所述數(shù)據(jù)集是標(biāo)記文檔。
9.根據(jù)權(quán)利要求8所述的方法,其中所述標(biāo)記文檔是根據(jù)如XML、SGML之類的標(biāo)記語言構(gòu)建的。
10.一種將數(shù)據(jù)集從第一應(yīng)用程序傳送到第二應(yīng)用程序的方法,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,所述方法包括以下步驟·產(chǎn)生代碼集作為壓縮密鑰來定義在所述定義部分中所定義的所述數(shù)據(jù)部分,其中代碼具有比所述第一值更少的值,·存儲所述代碼集,·至少為所述標(biāo)記層次分配所述集合的代碼,·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分,并且產(chǎn)生壓縮的數(shù)據(jù)集,以及·將所述壓縮的數(shù)據(jù)集和所述代碼集傳送到所述第二應(yīng)用程序。
11.根據(jù)權(quán)利要求10所述的方法,其中所述代碼集和所述壓縮數(shù)據(jù)是以包傳送的。
12.根據(jù)權(quán)利要求11所述的方法,其中一個包至少包括消息類型字段、發(fā)送接收應(yīng)用程序標(biāo)識字段、壓縮密鑰和壓縮的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的方法,其中一個包進(jìn)一步包括消息版本字段,并包含被發(fā)送到用于處理密鑰壓縮的壓縮處理器(510)的信息。
14.根據(jù)權(quán)利要求10所述的方法,其中所述壓縮密鑰與相對于所述壓縮密鑰而壓縮的每個壓縮數(shù)據(jù)傳輸一起被傳輸一次或多次。
15.根據(jù)權(quán)利要求10-14的任何一項所述的方法,其中所述壓縮密鑰是壓縮的。
16.根據(jù)權(quán)利要求10-15的任何一項所述的方法,其中所述壓縮數(shù)據(jù)是在附加步驟中被壓縮的。
17.一種用于在至少兩個站之間進(jìn)行數(shù)據(jù)傳輸?shù)南到y(tǒng),所述數(shù)據(jù)包括依據(jù)任一前述權(quán)利要求的壓縮數(shù)據(jù)集,該系統(tǒng)包括-壓縮部分,包括°用于啟動壓縮過程的壓縮處理器(510);°用于產(chǎn)生和處理與代碼對應(yīng)的密鑰的密鑰處理器(520);°用于處理產(chǎn)生的密鑰的存儲的存儲設(shè)備(10,525);°用于實施第一步驟以對要利用密鑰進(jìn)行壓縮的數(shù)據(jù)集進(jìn)行編碼的轉(zhuǎn)換器(530);°用于實施第二步驟以優(yōu)化要被壓縮的數(shù)據(jù)集的優(yōu)化器(535);°用于實施壓縮本身的第三步驟的壓縮器(540),-傳輸部分,包括°用于處理所有通信的傳輸器(550),°相對于包(570)產(chǎn)生消息以用于傳輸和接收的包處理器(555),°用于收聽數(shù)據(jù)傳輸?shù)慕涌?560)。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),進(jìn)一步包括壓縮密鑰(575)處理器、壓縮文檔處理器(580)、非壓縮數(shù)據(jù)集處理器(585)以及協(xié)議處理器(590)。
19.根據(jù)權(quán)利要求17所述的系統(tǒng),其中傳輸部分處理唯一的應(yīng)用程序標(biāo)識的產(chǎn)生,以使接收器能夠識別輸入數(shù)據(jù)以及還有具有唯一標(biāo)識的密鑰。
20.一種機(jī)器可讀的并且編碼用于壓縮數(shù)據(jù)集的程序的程序存儲設(shè)備,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,所述程序包括·至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
21.一種用于使計算機(jī)壓縮數(shù)據(jù)集的計算機(jī)可讀程序代碼裝置,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,所述計算機(jī)可讀程序代碼裝置包括·至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
22.一種包括計算機(jī)可用介質(zhì)的產(chǎn)品,該計算機(jī)可用介質(zhì)具有在其中包括的用于進(jìn)行數(shù)據(jù)集的壓縮的計算機(jī)可讀程序代碼裝置,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,在所述產(chǎn)品中的所述計算機(jī)可讀程序代碼裝置包括·至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
23.一種包括計算機(jī)可讀程序代碼裝置的傳播信號,所述計算機(jī)程序代碼裝置用于進(jìn)行數(shù)據(jù)集的壓縮,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,在所述傳播信號中的所述計算機(jī)可讀程序代碼裝置包括·至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼的指令集,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集的指令集。
24.一種具有在其中存儲的協(xié)議的計算機(jī)可讀介質(zhì),所述協(xié)議具有多個用于從遠(yuǎn)程應(yīng)用程序中獲取壓縮數(shù)據(jù)的消息,所述協(xié)議包括·用于接收一組壓縮數(shù)據(jù)集的請求消息,·用于接收用來壓縮所述壓縮的數(shù)據(jù)集的代碼集的請求,所述數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分,·包括所述壓縮的數(shù)據(jù)和所述代碼的響應(yīng),·包括應(yīng)用程序的標(biāo)識和代碼的唯一標(biāo)識的響應(yīng)。
25.一種通信系統(tǒng),包括控制通過通信網(wǎng)絡(luò)(730)進(jìn)行通信的第二單元(720)的第一單元(710),所述第一單元發(fā)送數(shù)據(jù)集,該數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是依據(jù)定義部分進(jìn)行配置的,所述系統(tǒng)進(jìn)一步包括壓縮單元(760)和解壓縮單元(770),其中所述壓縮單元被配置為·至少為所述數(shù)據(jù)部分分配具有比所述第一值更少值的代碼,·用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并產(chǎn)生壓縮的數(shù)據(jù)集。
26.根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述第一單元(710)是移動臺、移動電話、掌上型計算機(jī)、計算機(jī)之類中的任何一個。
27.根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述第一單元(710)是遠(yuǎn)程控制或監(jiān)控設(shè)備。
28.根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述第二單元(720)是遠(yuǎn)程受控裝置,例如機(jī)器人、車輛和導(dǎo)彈。
全文摘要
本發(fā)明涉及一種壓縮數(shù)據(jù)的方法,尤其是一種用于壓縮數(shù)據(jù)集的方法,該數(shù)據(jù)集具有標(biāo)記層次并包括具有第一值的數(shù)據(jù)部分,所述數(shù)據(jù)集是根據(jù)定義部分進(jìn)行配置的,該方法包括以下步驟至少為所述標(biāo)記層次分配具有比所述第一值更少值的代碼,其中所述標(biāo)記層次定義在所述定義部分中定義的所述數(shù)據(jù)部分,以及用所述分配的代碼來替換在所述數(shù)據(jù)集中的所述數(shù)據(jù)部分并且產(chǎn)生壓縮的數(shù)據(jù)集。在優(yōu)選實施例中本發(fā)明尤其涉及標(biāo)記語言,如XML、SGML之類。
文檔編號H04L29/06GK1802642SQ03826760
公開日2006年7月12日 申請日期2003年7月8日 優(yōu)先權(quán)日2003年7月8日
發(fā)明者M·榮松 申請人:艾利森電話股份有限公司