專利名稱:壓縮文檔的結(jié)構(gòu)化描述的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域,具體來說,涉及使用符合諸如SGML(標(biāo)準(zhǔn)通用標(biāo)記語言)和XML(可擴(kuò)展標(biāo)記語言)之類的通用標(biāo)記語言的文檔描述來對(duì)結(jié)構(gòu)化文檔進(jìn)行壓縮的方法和系統(tǒng)。這樣的文檔可以包含多媒體信息。
背景技術(shù):
近年來,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)成為進(jìn)行通信的主要媒介?,F(xiàn)在計(jì)算機(jī)可以插入到共享網(wǎng)絡(luò),操作系統(tǒng)可以允許應(yīng)用程序輕松地交換信息,因特網(wǎng)基礎(chǔ)結(jié)構(gòu)可以允許計(jì)算機(jī)找到它們的對(duì)話者,應(yīng)用程序可以使用復(fù)雜的算法來同步它們本身。
在這樣的可以進(jìn)行互操作的環(huán)境下,通用標(biāo)記語言提供了進(jìn)行文檔處理的解決方案。實(shí)際上,文檔的結(jié)構(gòu)在文檔使用中扮演著主要角色。文檔的格式編排、打印或索引本質(zhì)上都是根據(jù)其結(jié)構(gòu)來進(jìn)行的。最初發(fā)明SGML是為了輕松地將文檔呈現(xiàn)與文件結(jié)構(gòu)和內(nèi)容分離。由于其對(duì)結(jié)構(gòu)進(jìn)行編碼的能力,XML引起了對(duì)非文檔應(yīng)用程序有興趣的社會(huì)各界的注意。XML的受眾范圍擴(kuò)大,包括了(但不限于)電子商務(wù)、數(shù)據(jù)庫和知識(shí)表達(dá)界。
XML和更一般的標(biāo)記語言現(xiàn)在廣泛地用于描述和配置文檔(元數(shù)據(jù)(metadata))。結(jié)構(gòu)化文檔包括多個(gè)可以彼此嵌套的信息元素。信息元素彼此是通過標(biāo)記來標(biāo)識(shí)和分離的,標(biāo)記用于標(biāo)識(shí)信息元素的元素類型。結(jié)構(gòu)化文檔一般包括代表整個(gè)文檔并由標(biāo)記文檔的開始和結(jié)束的標(biāo)記來標(biāo)識(shí)的第一信息元素或基元素。此第一元素包括信息子元素,例如,文本的段落,每一個(gè)信息子元素都由標(biāo)記元素的開始和結(jié)束的標(biāo)記來標(biāo)識(shí)。標(biāo)記可以與規(guī)定信息元素的一個(gè)或多個(gè)特征的標(biāo)記屬性關(guān)聯(lián)。
標(biāo)記內(nèi)容代表一般用于顯示或者由用戶進(jìn)行操作的信息。根據(jù)標(biāo)記類型,標(biāo)記內(nèi)容可以是可選的,也可以是必需的,并可以包含其他嵌套的信息子元素,而該嵌套的信息子元素又可以由標(biāo)記分隔,并具有內(nèi)容和屬性。
結(jié)構(gòu)化文檔可以與一種模式關(guān)聯(lián),該模式反映應(yīng)該驗(yàn)證結(jié)構(gòu)化文檔以便被視為“有效的”的規(guī)則。它也包含有關(guān)默認(rèn)值、元素、屬性類型和類型層次結(jié)構(gòu)的信息。有效性可以確保接收到的文檔符合該模式,因此,具有計(jì)劃的含義。此外,它還確定每一個(gè)描述項(xiàng)(信息元素或?qū)傩?的特性,即,類型。XML標(biāo)準(zhǔn)包括XML模式語言,該語言是為了給一類具有類似結(jié)構(gòu)的XML文檔規(guī)定語法而設(shè)計(jì)。
然而,XML是一種冗長的語言,因此,處理起來效率比較低,傳輸起來開銷也比較大。由于這個(gè)緣故,ISO/IEC 15938-1,具體來說,是MPEG-7(活動(dòng)圖像專家組)提出了一種用于對(duì)結(jié)構(gòu)化文檔的描述進(jìn)行編碼(壓縮)的方法和二進(jìn)制格式以及對(duì)這樣的二進(jìn)制格式進(jìn)行解碼的方法。此標(biāo)準(zhǔn)是為處理諸如多媒體數(shù)據(jù)之類的高度結(jié)構(gòu)化的數(shù)據(jù)而特別設(shè)計(jì)的。
為了獲得壓縮效率,此方法依靠模式分析階段。在此階段,計(jì)算內(nèi)部表以將二進(jìn)制代碼與每一個(gè)XML元素、類型和屬性關(guān)聯(lián)。此方法命令編碼器和對(duì)應(yīng)的解碼器完全了解的相同的模式。
當(dāng)用于對(duì)結(jié)構(gòu)化文檔進(jìn)行編碼的模式需要擴(kuò)展時(shí),最佳的解決方案是使解碼器可以使用擴(kuò)展的模式。然而在特定的情況下,不可能輕松地更新解碼器以便讓它們能夠訪問該擴(kuò)展的模式。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種以這樣的方式對(duì)結(jié)構(gòu)化文檔進(jìn)行編碼的方法,以便即使解碼器不知道每個(gè)所需要的模式,也可以對(duì)文檔部分地進(jìn)行解碼。
本發(fā)明的另一個(gè)目的是提供這樣一種編碼方法,該方法可以確保正向和反向兼容性,即,允許解碼器至少部分地對(duì)結(jié)構(gòu)化文檔進(jìn)行解碼,該結(jié)構(gòu)化文檔具有解碼器不能訪問的至少第一模式中定義的結(jié)構(gòu),并由解碼器能夠訪問的至少第二模式中的變化產(chǎn)生,該結(jié)構(gòu)化文檔包括彼此嵌套的信息元素,文檔的信息元素在至少第一和第二模式中與相應(yīng)的元素類型關(guān)聯(lián),該元素類型的每一個(gè)定義信息元素的相應(yīng)的元素結(jié)構(gòu),第一模式不能被解碼器訪問,第二模式可以被解碼器訪問,第一模式定義至少一個(gè)由第二模式中定義的對(duì)應(yīng)元素派生而來的派生信息元素。
根據(jù)本發(fā)明的編碼方法包括下列步驟使用所述的第一和第二模式將文檔編碼為二進(jìn)制流,對(duì)于文檔的每一個(gè)信息元素,該二進(jìn)制流包括對(duì)信息元素進(jìn)行編碼的二進(jìn)制序列,以及在對(duì)派生信息元素進(jìn)行編碼的二進(jìn)制序列中插入一個(gè)指定第一模式的引用,在該第一模式中,定義了該派生元素的結(jié)構(gòu),所述的指定第一模式的引用在一個(gè)包含對(duì)用于編碼文檔的所有模式的引用的模式引用列表中進(jìn)行定義,該模式引用列表可以被解碼器訪問。
根據(jù)本發(fā)明的一個(gè)方面,對(duì)文檔的每一個(gè)元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,該內(nèi)容字段中包含元素的編碼值,放在內(nèi)容字段前面的長度字段,該長度字段其中包含內(nèi)容字段的長度的編碼值。
根據(jù)本發(fā)明的另一個(gè)方面,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被限制,對(duì)派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段和追加到該內(nèi)容字段上的在第二模式中定義的對(duì)第一模式的引用和對(duì)派生元素的結(jié)構(gòu)類型的引用。
根據(jù)本發(fā)明的再一個(gè)方面,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被進(jìn)行擴(kuò)展,派生信息元素的結(jié)構(gòu)類型包括具有第二模式中定義的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型的第一部分,以及對(duì)該派生信息元素是特定的并具有第一模式中定義的結(jié)構(gòu)類型的第二部分,對(duì)派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,其中該內(nèi)容字段包括包含對(duì)第二模式的引用的字段,包含對(duì)第二模式中的對(duì)應(yīng)元素的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,包含第一部分的編碼值的字段,包含對(duì)第一模式的引用的字段,包含對(duì)第二部分的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,以及包含所述的第二部分的編碼值的字段。
根據(jù)本發(fā)明的再一個(gè)方面,對(duì)信息元素進(jìn)行編碼的二進(jìn)制序列包括替換字段,該替換字段包括指出該信息元素的名稱是否更改的替換標(biāo)志,如果替換標(biāo)志指出更改,則還包括元素名稱引用字段,該元素名稱引用字段包含指定信息元素的新名稱的引用,以及模式引用字段,該模式引用字段包含對(duì)其中定義了新名稱引用的模式的引用。
根據(jù)本發(fā)明的再一個(gè)方面,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),以及指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),當(dāng)模式狀態(tài)方式字段處于第一狀態(tài)時(shí),編碼的信息元素包括任何模式引用和任何其他更改信息,當(dāng)模式狀態(tài)方式字段處于第二狀態(tài)時(shí),信息元素的所有子元素都不包括模式引用和任何其他更改信息。
根據(jù)本發(fā)明的再一個(gè)方面,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),以及指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改,并且信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第四狀態(tài),當(dāng)模式狀態(tài)模式字段處于第一狀態(tài)時(shí),編碼的信息元素包括任何模式引用和任何其他更改信息,當(dāng)模式狀態(tài)方式字段處于第二狀態(tài)或第四狀態(tài)時(shí),信息元素的所有子元素都不包括模式引用和任何其他更改信息。
根據(jù)本發(fā)明的再一個(gè)方面,包括對(duì)用于編碼結(jié)構(gòu)化文檔的所有模式的引用的模式引用列表插入在與對(duì)結(jié)構(gòu)化文檔進(jìn)行編碼的二進(jìn)制流相關(guān)聯(lián)的標(biāo)頭(header)中。
本發(fā)明的另一個(gè)目的是提供這樣的一種方法,該方法用于至少部分地對(duì)二進(jìn)制流進(jìn)行解碼,該二進(jìn)制流對(duì)結(jié)構(gòu)化文檔進(jìn)行編碼,該結(jié)構(gòu)化文檔具有在解碼器不能訪問的至少第一模式中定義的結(jié)構(gòu),并由解碼器能夠訪問的至少第二模式中的變化產(chǎn)生,該結(jié)構(gòu)化文檔包括彼此嵌套的信息元素,該文檔的信息元素在至少第一和第二模式中與相應(yīng)的元素類型關(guān)聯(lián),該元素類型的每一個(gè)定義信息元素的相應(yīng)的元素結(jié)構(gòu),該第一模式不能被解碼器訪問,該第二模式可以被解碼器訪問,第一模式定義至少一個(gè)由第二模式中定義的對(duì)應(yīng)元素派生而來的派生信息元素。
根據(jù)本發(fā)明,該解碼方法包括下列步驟使用第二模式連續(xù)地讀取和解碼對(duì)結(jié)構(gòu)化文檔進(jìn)行編碼的二進(jìn)制流,并在該二進(jìn)制流中檢測(cè)對(duì)文檔的每一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列,在編碼的信息元素的一個(gè)二進(jìn)制序列中檢測(cè)對(duì)第一模式的引用,如解碼器所知道的在模式引用列表中所定義的那樣,從所述的模式引用的檢測(cè)中標(biāo)識(shí)相對(duì)于所述的第一模式的二進(jìn)制數(shù)據(jù),以及在所述的二進(jìn)制流的連續(xù)讀取和解碼期間相對(duì)于所述的第一模式跳過所述的二進(jìn)制數(shù)據(jù)。
根據(jù)本發(fā)明的再一個(gè)方面,對(duì)文檔的每一個(gè)元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,該內(nèi)容字段中包含元素的編碼值,以及放在內(nèi)容字段前面的長度字段,該長度字段中包含長度編碼值,該長度編碼值被解碼器用來確定對(duì)元素進(jìn)行編碼的二進(jìn)制序列的結(jié)尾。
根據(jù)本發(fā)明的再一個(gè)方面,該解碼方法進(jìn)一步包括下列步驟讀取和解碼包含對(duì)第一模式的引用的二進(jìn)制序列中的長度編碼值,以及確定作為解碼的長度值和對(duì)第一模式的引用的二進(jìn)制序列中的位置的函數(shù)的要跳過的二進(jìn)制數(shù)據(jù)的長度。
根據(jù)本發(fā)明的再一個(gè)方面,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被限制,對(duì)派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段和追加到該內(nèi)容字段的,在第二模式中定義的對(duì)第一模式的引用和對(duì)派生元素的結(jié)構(gòu)類型的引用。
根據(jù)本發(fā)明的再一個(gè)方面,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被擴(kuò)展,該派生信息元素的結(jié)構(gòu)類型包括具有第二模式中定義的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型的第一部分,以及對(duì)于該派生信息元素是特定的并具有第一模式中定義的結(jié)構(gòu)類型的第二部分,對(duì)該派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,其中該內(nèi)容字段包括包含對(duì)第二模式的引用的字段,包含對(duì)第二模式中的對(duì)應(yīng)元素的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,包含第一部分的編碼值的字段,包含對(duì)第一模式的引用的字段,包含對(duì)第二部分的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,以及包含所述的第二部分的編碼值的字段。
根據(jù)本發(fā)明的再一個(gè)方面,派生信息元素在第一模式中包括相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的名稱已經(jīng)更改的名稱,對(duì)派生元素進(jìn)行編碼的二進(jìn)制序列包括替換字段,該替換字段包括指出派生信息元素的名稱是否更改的替換標(biāo)志,如果替換標(biāo)志指出更改,則還包括模式引用字段,該模式引用字段包含對(duì)第一模式的引用,以及指定第一模式中的派生信息元素的名稱的元素名稱引用。
根據(jù)本發(fā)明的再一個(gè)方面,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),以及指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),當(dāng)模式狀態(tài)方式字段處于第一狀態(tài)時(shí),編碼的信息元素不包括任何模式引用和任何其他更改信息,當(dāng)模式狀態(tài)方式字段處于第二狀態(tài)時(shí),信息元素的所有子元素都不包括模式引用和任何其他更改信息。
根據(jù)本發(fā)明的再一個(gè)方面,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),以及指出信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素已經(jīng)更改,并且信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第四狀態(tài),當(dāng)模式狀態(tài)方式字段處于第一狀態(tài)時(shí),編碼的信息元素包括任何模式引用和任何其他更改信息,當(dāng)模式狀態(tài)方式字段處于第二狀態(tài)或第四狀態(tài)時(shí),信息元素的所有子元素都不包括模式引用和任何其他更改信息。
根據(jù)本發(fā)明的再一個(gè)方面,包括對(duì)用于編碼結(jié)構(gòu)化文檔的所有模式的引用的模式引用列表在與編碼結(jié)構(gòu)化文檔的二進(jìn)制流相關(guān)聯(lián)的標(biāo)頭中讀取。
通過參考下面的描述和附圖,本發(fā)明的各種特點(diǎn)以及其優(yōu)選的實(shí)施例可以更好地理解,其中圖1描述了根據(jù)MPEG-7標(biāo)準(zhǔn)的結(jié)構(gòu)化文檔的樹結(jié)構(gòu)的二進(jìn)制格式;圖2描述了MPEG-7解碼器的方框圖;圖2a描述了圖2中表示的解碼器的詳細(xì)部分的方框圖;圖3描述了根據(jù)本發(fā)明的編碼信息元素的二進(jìn)制格式;圖4描述了在樹結(jié)構(gòu)中相對(duì)于彼此定義的元素類型;圖5描述了包括以樹結(jié)構(gòu)組織的信息元素的結(jié)構(gòu)化文檔。
具體實(shí)施例方式
請(qǐng)參看圖1,根據(jù)MPEG-7標(biāo)準(zhǔn)的編碼結(jié)構(gòu)化文檔1的二進(jìn)制格式包括規(guī)定編碼模式的文檔標(biāo)頭2,至少一個(gè)結(jié)構(gòu)化信息元素或元素集3。
文檔標(biāo)頭2對(duì)下列參數(shù)進(jìn)行編碼-″allows_skipping″此參數(shù)規(guī)定是否在編碼文檔中對(duì)元素長度進(jìn)行編碼;此參數(shù)可以具有下列值00-不對(duì)長度進(jìn)行編碼,01-可選地對(duì)長度進(jìn)行編碼,10-對(duì)長度進(jìn)行編碼是必需的。
--″allows_partial_instantiation″此參數(shù)規(guī)定文檔中的所有子樹或結(jié)構(gòu)化信息元素是否完全實(shí)例化;此參數(shù)可以具有下列值0-不允許部分實(shí)例化文檔的所有元素都存在于編碼文檔中,1-允許部分實(shí)例化。
--″allows_subtyping″此參數(shù)規(guī)定子樹是否可以包含多形性,即,可具有數(shù)據(jù)類型的可能的不同子類型的信息元素或元素屬性;此參數(shù)可以具有下列值0-在子樹中不對(duì)多形性進(jìn)行編碼,1-允許多形性。
在圖1中,一組結(jié)構(gòu)化信息元素3包括元素集標(biāo)頭31和元素32和/或元素集3。元素集標(biāo)頭31包括--一個(gè)關(guān)鍵字,用于在解碼階段澄清有關(guān)元素類型的任何可能的歧義,以及--下一個(gè)較高的層次級(jí)別的元素3中的類似的元素或元素集的出現(xiàn)次數(shù)Nb。
如果定義文檔結(jié)構(gòu)的模式為元素或元素集的類型規(guī)定單個(gè)必需的值,則出現(xiàn)次數(shù)不存在于編碼文檔中。
元素32包括下列字段--以元素的編碼值的位數(shù)規(guī)定長度的長度參數(shù)33,--類型35,包含規(guī)定元素值的結(jié)構(gòu)和元素的屬性的數(shù)據(jù)類型號(hào)碼,-元素的屬性值36,這些值例如可以按字母順序排列,以及-值37,它對(duì)元素本身的值進(jìn)行編碼;此字段可以包含具有元素32或元素集3的結(jié)構(gòu)的一個(gè)或多個(gè)元素,當(dāng)元素具有諸如Integer、String之類的簡(jiǎn)單類型時(shí),其為一個(gè)簡(jiǎn)單的值。
取決于編碼文檔的標(biāo)頭2中的“allows_skipping”參數(shù)的值,可以沒有長度參數(shù)33。當(dāng)長度在元素32中編碼時(shí),通過使用長度信息跳過文檔中以前的元素,可以對(duì)文檔中的特定元素進(jìn)行快速訪問。
編碼的元素中可以沒有字段35、36、37。如果元素的可能的數(shù)據(jù)類型在文檔的模式中是唯一的,則類型號(hào)碼35不被編碼。如果模式中規(guī)定的類型沒有屬性,則屬性值36不被編碼。例如在文檔的部分實(shí)例化的情況下,如果元素是空的,則該元素的值37不被編碼。
現(xiàn)在請(qǐng)參看圖2,MPEG-7解碼器10包括模式編譯器11,其被設(shè)計(jì)為用于接收和處理諸如XML模式之類的模式9,以便獲得二進(jìn)制語法代碼13,該代碼被執(zhí)行用于對(duì)解碼器10的輸入中應(yīng)用的編碼文檔7進(jìn)行解碼,解碼器10例如以XML格式在輸出中提供解碼文檔8。
模式的編譯過程依賴以前的模式分析階段,并用于生成以二進(jìn)制語法代碼形式定義的有限狀態(tài)自動(dòng)操作12。在處理過的模式中定義的每一個(gè)復(fù)雜類型被轉(zhuǎn)換成表達(dá)復(fù)雜類型編碼規(guī)則的有限狀態(tài)自動(dòng)操作。輸入的編碼文檔7以二進(jìn)制流形式應(yīng)用于解碼器,在二進(jìn)制流中執(zhí)行二進(jìn)制語法代碼。
在圖2a中,模式編譯過程11包括四個(gè)階段。模式實(shí)現(xiàn)的第一階段在于平化類型繼承和解決命名空間(namespace)支持。此階段生成實(shí)現(xiàn)的模式15。第二階段在于從每一個(gè)復(fù)雜類型生成語法樹。然后,轉(zhuǎn)換如此生成的語法樹16,以便減輕二進(jìn)制編碼和改善壓縮比。第三階段在于規(guī)范化前一階段生成的語法樹以便為每一個(gè)樹節(jié)點(diǎn)以及之后規(guī)范化的語法樹17產(chǎn)生簽名。這些簽名在下面的階段用于生成出現(xiàn)在元素標(biāo)頭31中的標(biāo)頭關(guān)鍵字和樹節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系。第四階段在于生成在解碼過程中使用的有限狀態(tài)自動(dòng)操作12。
在模式實(shí)現(xiàn)階段,對(duì)模式進(jìn)行分析,以列出在模式中使用的所有名稱,以便將擴(kuò)展名稱歸因于每一個(gè)元素、屬性、類型和元素組,這些名稱構(gòu)成了所謂的“命名空間”。擴(kuò)展名稱是作為命名空間標(biāo)識(shí)符和項(xiàng)目名的連接構(gòu)建的。然后,通過以引用的元素的定義替換每一種復(fù)雜類型中的元素引用來生成實(shí)現(xiàn)的復(fù)雜類型。
在語法樹生成階段,通過將元素名稱與元素的類型關(guān)聯(lián)來生成項(xiàng)目節(jié)點(diǎn)。通過包含關(guān)系鏈接起來的項(xiàng)目節(jié)點(diǎn)到組節(jié)點(diǎn)構(gòu)成了為每一個(gè)復(fù)雜類型生成的語法樹。在特定的情況下,減少語法樹以改善結(jié)果二進(jìn)制格式的緊密度,此過程在于以非破壞性的方式簡(jiǎn)化復(fù)雜類型定義。
語法樹規(guī)范化的目的在于給予語法樹中的每個(gè)組節(jié)點(diǎn)唯一的名稱。此過程在于對(duì)節(jié)點(diǎn)進(jìn)行排序,并最后給予它們一個(gè)關(guān)鍵字,此關(guān)鍵字是在自動(dòng)操作構(gòu)建階段所需要的。
為每個(gè)元素或元素組生成簽名。每個(gè)節(jié)點(diǎn)簽名是通過其子節(jié)點(diǎn)簽名的連接而生成的。在節(jié)點(diǎn)的備用組或非有序組的情況下,節(jié)點(diǎn)簽名按字母順序進(jìn)行排序,然后附加。在有序節(jié)點(diǎn)組的情況下,節(jié)點(diǎn)簽名在模式中是按定義的順序附加的。項(xiàng)目節(jié)點(diǎn)簽名等于它們的元素名稱。
在有限狀態(tài)自動(dòng)操作生成階段,按照下面的規(guī)則遞歸地定義復(fù)雜類型自動(dòng)操作1.語法樹的每個(gè)節(jié)點(diǎn)產(chǎn)生一個(gè)自動(dòng)操作,2.復(fù)雜類型自動(dòng)操作是由其根節(jié)點(diǎn)產(chǎn)生的自動(dòng)操作,3.每個(gè)節(jié)點(diǎn)自動(dòng)操作是通過合并其子自動(dòng)操作生成的,這種合并的特性依賴于節(jié)點(diǎn)的特性。
在該過程的結(jié)尾,實(shí)現(xiàn)自動(dòng)操作以便產(chǎn)生它們的過渡編碼關(guān)鍵字。這些自動(dòng)操作包括兩種類型狀態(tài)和元素過渡(elementtransition),用于為語法樹中的每一項(xiàng)目節(jié)點(diǎn)鏈接元素過渡。當(dāng)對(duì)應(yīng)元素出現(xiàn)在要解碼的文檔的輸入流中時(shí),交叉元素過渡。當(dāng)激活特定的解碼器(該解碼器在簡(jiǎn)單類型的情況下可以是特定的數(shù)據(jù)類型解碼器,在復(fù)雜類型的情況下可以是通用或特定的解碼器),一個(gè)類型狀態(tài)被觸發(fā)。
在某些情況下,定義文檔結(jié)構(gòu)的模式需要擴(kuò)展或修改。如果應(yīng)用于解碼器的編碼文檔的新模式可用,則該解碼器可以為文本和二進(jìn)制格式兩者提供完全的前向和反向兼容性。實(shí)際上,可以驗(yàn)證整個(gè)描述,命名空間可以附屬于每一個(gè)元素和屬性。此外,類型的層次結(jié)構(gòu)是可用的,并且可以讓擴(kuò)展性點(diǎn)對(duì)于應(yīng)用程序更為明確。這樣的模式更新解決了許多由擴(kuò)展性和兼容性所帶來的技術(shù)問題。然而,標(biāo)準(zhǔn)MPEG-7目前沒有提供有關(guān)將用于對(duì)編碼文檔進(jìn)行解碼的任何信息。如此,被配置為使用模式的解碼器無法對(duì)用經(jīng)過修改的模式編碼的文檔進(jìn)行解碼(沒有前向兼容性)。此問題可以僅通過在對(duì)編碼文檔進(jìn)行解碼之前給解碼器提供有關(guān)要使用的模式的信息即可解決?;蛘撸@樣的自動(dòng)操作或語法樹可以被轉(zhuǎn)換成二進(jìn)制語法代碼,該代碼由解碼器執(zhí)行以便以輸入二進(jìn)制流的形式對(duì)文檔進(jìn)行解碼。
在特定的情況下,模式更新所導(dǎo)致的復(fù)雜性可能是有問題的。當(dāng)不可能輕松地更新解碼器以便讓它們能夠訪問經(jīng)過修改的模式(前向兼容性)時(shí)會(huì)發(fā)生這樣的情況,例如,當(dāng)要更新的解碼器數(shù)量很高或者當(dāng)解碼器不是設(shè)計(jì)為使用其他模式時(shí)。為了處理這些特定的情況,本發(fā)明的目的是提出一種信息元素二進(jìn)制格式,以及編碼和解碼方法,其允許解碼器至少“部分地”對(duì)具有相對(duì)于解碼器知道的模式而修改或擴(kuò)展結(jié)構(gòu)的文檔進(jìn)行解碼。
在這一方面,在編碼階段選擇兼容性級(jí)別。此級(jí)別用應(yīng)該確保其兼容性的一組模式的字眼來表示。編碼過程添加了必要的冗余以確保預(yù)期的兼容性。在極端的情況下,如果只需要與一個(gè)當(dāng)前模式兼容,則除去冗余,結(jié)果二進(jìn)制編碼文檔符合當(dāng)前模式。
基本上,編碼過程在編碼文檔中添加了有關(guān)在編碼階段使用的模式的信息。此信息包括模式標(biāo)識(shí)符和長度信息,以允許使用對(duì)解碼器不可用的模式跳過編碼的文檔中的一個(gè)元素。
模式標(biāo)識(shí)符由解碼器知道的模式標(biāo)識(shí)符詞典進(jìn)行定義,該模式標(biāo)識(shí)符例如插入在編碼文檔的標(biāo)頭2中或插入在由解碼器所使用的解碼器初始化和配置文件中。此模式標(biāo)識(shí)符詞典包含由解碼器用于對(duì)接收到的編碼文檔進(jìn)行解碼的所有可能的模式標(biāo)識(shí)符。此詞典可以由解碼器使用下面的二進(jìn)制語法來讀取表1
其中“NumberOfSchemaIdentifiers”和“SchemaIdentifier[]”分別代表詞典中的模式標(biāo)識(shí)符的數(shù)量和包含模式標(biāo)識(shí)符的陣列,“UINT_VLC”規(guī)定要對(duì)無限大小的無符號(hào)整數(shù)進(jìn)行編碼的格式。在格式“UINT_VLC”中,通過整數(shù)塊的無限集對(duì)整數(shù)進(jìn)行編碼,每一個(gè)塊都由5個(gè)位構(gòu)成。每一個(gè)塊的第一位都規(guī)定其他塊是否跟隨在當(dāng)前塊之后,塊的最后4位對(duì)整數(shù)進(jìn)行編碼。
此二進(jìn)制語法表示模式詞典包括數(shù)字,后面是一個(gè)字符串形式的模式標(biāo)識(shí)符列表,該列表中的每一個(gè)模式標(biāo)識(shí)符的位置都自動(dòng)定義可以在編碼文檔中使用以便標(biāo)識(shí)特定的模式的模式號(hào)碼。詞典的讀取過程按順序包括在詞典中讀取模式的數(shù)量“NumberOfSchemaIdentifiers”的步驟、初始化計(jì)數(shù)器i的步驟,包括讀取“SchemaIdentifier[]”陣列中的第i個(gè)值的步驟和增大計(jì)數(shù)器i的步驟的循環(huán)指令,其中0≤i<NumberOfSchemaIdentifiers。在下表中,詞典包含三個(gè)模式標(biāo)識(shí)符,每一個(gè)模式都隱式地與由詞典中的模式標(biāo)識(shí)符的等級(jí)定義的二進(jìn)制模式號(hào)碼關(guān)聯(lián)。
表2
二進(jìn)制模式號(hào)碼的長度(位數(shù))被定義為詞典中的模式標(biāo)識(shí)符的數(shù)量的函數(shù),并等于E(log2(Nu mberOfSchemaIdentifiers)),E(x)等于四舍五入到下一個(gè)較高整數(shù)的x。
如圖3所示,編碼文檔中的每一個(gè)類型號(hào)碼字段35都與模式號(hào)碼字段38關(guān)聯(lián),模式號(hào)碼對(duì)應(yīng)于模式詞典中定義的模式標(biāo)識(shí)符,此模式號(hào)碼標(biāo)識(shí)在其中定義關(guān)聯(lián)的類型的模式。
以這種方式,根據(jù)本發(fā)明的編碼器和解碼器可以使用多個(gè)模式來對(duì)一個(gè)文檔進(jìn)行編碼和解碼。
假設(shè)在XML語言中在模式S0和修改的模式S1之間有三個(gè)更改類型,這些更改類型可能結(jié)合在一起。第一個(gè)更改類型是全局元素名稱替換為另一個(gè)全局元素名稱,全局元素是在一個(gè)模式中相對(duì)于其他元素以獨(dú)立的方式定義的(不嵌套在另一個(gè)元素中)。這樣的更改以XML模式語言按如下方式定義。
在XML模式S0中…<complexType name=″S0t0″base=″string″>
…<element name=″e(cuò)0″type=″S0t0″/>
…在XML模式S1中…<element name=″e(cuò)1″type=″S0t0″substitutionGroup=″S0e0″/>
…此語法定義了復(fù)雜類型“t0”、兩個(gè)名為“e0”和“e1”并具有類型“t0”的元素,元素“e1”被替換為元素“e0”。這樣的具有值“value1”的元素“e1”可能出現(xiàn)在基于模式S1的XML文檔中,如下所示…<e1>value1</e1>
…根據(jù)本發(fā)明,這樣的修改是通過在元素32中添加替換字段4來編碼的,包括-替換標(biāo)志41-被替代元素號(hào)碼43,以及-定義了元素號(hào)碼43的模式號(hào)碼42。
當(dāng)替換標(biāo)志被設(shè)置為0時(shí),下面的替換字段42和43在編碼的元素中不存在。
用模式S1編碼的并包含定義“e1”的元素“e1”包括下面的字段值,如圖3所描述[length]1[S1][e1][S0][t0][value1]其中[length]是元素的二進(jìn)制編碼長度,“1”是表示替換的替換標(biāo)志的值,[S1]和[S0]是如模式詞典所定義的模式S1和S0的編碼的號(hào)碼,[t0]是類型“t0”的編碼類型號(hào)碼,[value1]是元素“e1”的值“value1”的編碼值,[e1]是元素“e1”的編碼號(hào)碼。這樣的二進(jìn)制代碼將由只知道模式S0(因此“e0”)的解碼器根據(jù)本發(fā)明進(jìn)行解碼,解碼的元素可以解釋如下<e0 DDLIsSubstituted=″true″>value 1</e0>
因此,解碼器不了解[e1]的含義,并認(rèn)為“valuel”是由另一個(gè)未知元素代替的元素“e0”的值。
模式S0和新模式S1之間的第二種更改類型在于通過限制從類型“t0”導(dǎo)出新類型t1。這樣的限制在于減小類型定義中的至少一個(gè)元素或元素組的最大出現(xiàn)次數(shù),或者增大其最小出現(xiàn)次數(shù),或者將類型t0更改為子類型t1,或定義遵守類型t0中以前定義的約束的新元素組。
下面的示例中以XML模式語言表示了這樣的更改。XML模式S0包括下面的語法…<complexType name=″t0″>
<sequence>
<element name=″e(cuò)l′type=″string″maxOccurs=″unbounded″/>
</sequence>
</complexType>
…<element name=″e(cuò)″type=″S0t0″/>
…在XML模式S1中…<complexType name=″t1″>
<complexContent>
<restriction base=″S0t0″>
<Sequence>
<element narne=″e(cuò)1″type=″string″maxOccurs=″1″I>
</sequence>
</restriction>
</complexContent>
</complexType>
…在此示例中,類型“t0”在XML模式語言中定義為包括元素“e1”的任意數(shù)量的出現(xiàn)次數(shù)。類型“t1”被定義為類型“t0”的限制,并包括0或一個(gè)單元素“e1”,這是類型“t0”的特例。因此,類型“t1”強(qiáng)制類型“t0”約束,并可以使用相同的二進(jìn)制格式。
要編碼的文檔包含下列信息<S0e xsitype=″S1t1″>
<e1>value1</e1>
</S0e>
這意味著,文檔包含具有類型“t1”的元素“e”,而類型“t1”是模式S0中定義的元素“e”的預(yù)期的類型“t0”的子類型。
如果不需要前向兼容性,則此元素可以按如下方式編碼[length]0[S1][t1][Value1]其中“0”是被設(shè)置為不替換的替換標(biāo)志的值。
知道模式S0而不知道S1的解碼器對(duì)字段[Length]和[S1]進(jìn)行解碼。由于S1沒有在模式詞典中進(jìn)行定義,則可以推論出,與元素“e”相關(guān)的其他字段無法使用模式S0進(jìn)行解釋,并使用長度信息跳過元素“e”。如果解碼器知道模式S1(并因此知道S0),則它將檢索元素“e”的原始結(jié)構(gòu)。
如果需要前向兼容性,則根據(jù)圖3定義的結(jié)構(gòu)對(duì)元素“e”進(jìn)行編碼,如下所示[length]0[S0][t0][value1][S1][t1]知道S0和S1這兩個(gè)模式的解碼器可以對(duì)編碼的元素“e”的所有字段進(jìn)行解碼。然后通過比較解碼流的長度字段和長度,它就能推論出,沒有更多的子類型,并將檢索元素“e”的原始結(jié)構(gòu)。如果解碼器知道模式S0而不知道S1,則它將對(duì)字段的第一部分進(jìn)行解碼,并跳過[S1]和[t1]字段(使用長度字段)。因此,它將創(chuàng)建下面的文本樹<S0e xsitype=″S0t0″DDLisSubtype=″true″>
<e1>value1</e1>
<S0e>
舊模式S0和新模式S1之間的第三種更改類型在于通過擴(kuò)展從類型“t0”導(dǎo)出新類型t1。如果應(yīng)該確保前向兼容性,則應(yīng)分兩部分定義新類型t1,第一部分具有類型“t0”,第二部分具有類型“t1”,該類型必須在新模式S1中進(jìn)行定義。
下面的示例中以XML模式語言表示了這樣的更改。XML模式S0包括下面的文本…<complexType name=″t0″>
<sequence>
<element name=″e(cuò)1″type=″string″/>
</sequence>
</complexType>
…
<element name=″e(cuò)″type=″S0t0″/>
…在XML模式S1中,新類型t1被定義為類型t0的擴(kuò)展,如下所示…<complexType name=″t1″>
<complexContent>
<extension base=″S0t0″>
<sequence>
<element name=″e(cuò)2″type=″string″/>
</sequence>
</extension>
</complexContent>
</complexType>
…如果需要前向兼容性,則要被編碼的XML文檔包含下列信息<S0e xsitype=″S1t1″>
<e1>value1</el>
<e2>value2</e2>
</S0e>
其中value1是類型“t1”中的類型“t0”的部分,“value2”是對(duì)類型“t1”特定的部分,并添加到類型“t0”。此信息按如下方式被編碼[length]0[S0][t0][Value1][S1][t1][Value2]
如果解碼器知道S0(而不知道S1),則它將對(duì)二進(jìn)制編碼信息的第一部分進(jìn)行解碼,并使用長度信息跳過t1部分(即,[t1][value2])。這樣的過程導(dǎo)致下面的文本樹<S0e xsitype=″S0t0″ddlisSubtype=″true″>
<e1>value1</e1>
</S0e>
因此,t1的特定部分將不會(huì)被解碼。如果解碼器同時(shí)知道S0和S1這兩個(gè)模式,則它將檢索原始的文本樹以上處理可以合并,從而允許定義可能在不同的模式中定義的類型的復(fù)雜層次結(jié)構(gòu)。圖4代表了這樣的一個(gè)層次結(jié)構(gòu)的示例,其中類型t5和t6是類型t4的兩個(gè)擴(kuò)展,而類型t4是類型t3的擴(kuò)展,類型t3是類型t1的限制。同樣,類型t8和t9分別是類型t7的限制和擴(kuò)展,而類型t7是類型t2的擴(kuò)展,類型t2是類型t1的擴(kuò)展。假設(shè)在相應(yīng)的不同模式S1到S9中定義了類型t1到t9中的每一個(gè)類型,如果對(duì)模式S1、S3、S4和S5需要兼容性,則類型t5的元素以下列形式進(jìn)行編碼[length]0[S1][t1][att1][value1][S3][t3][S4][t4][att4][value4][S5][t5][att5][Value5]其中字段[att-i]是類型t-i的相應(yīng)的編碼屬性值,[att-i][value-i]是類型t5的t-i部分(-i=1,4和5)。如果對(duì)模式S3和S5需要兼容性,則類型t5的一個(gè)元素以下列形式進(jìn)行編碼[length]0[S3][t3][att3][value3][S5][t5][att5][Value5]其中字段[att3][value3]是根據(jù)類型t3進(jìn)行編碼的類型t5的t1部分,[att5][value5]是根據(jù)t5進(jìn)行編碼的類型t5的t4+t5部分。
當(dāng)然,模式之間的上述的第一種更改類型可以通過將替換字段4添加到編碼的元素來同第二和第三種更改類型相結(jié)合。
在前面的描述中,通過將二進(jìn)制替代字段(字段41、42、43)和與每一個(gè)元素類型關(guān)聯(lián)的模式號(hào)碼字段添加到加到編碼文檔中來獲得前向兼容性。因此,這一解決方案增大了結(jié)果編碼文檔的大小。為了優(yōu)化編碼,編碼文檔的各部分常常被鏈接到相同的模式。在這一方面,本發(fā)明提出了在每一個(gè)編碼的元素32中添加一個(gè)字段5,如圖3所示,該字段5包含代表模式狀態(tài)模式的模式狀態(tài)代碼。該字段定義了對(duì)應(yīng)元素和子元素是否需要來自相同模式的規(guī)定。如果相同模式用于對(duì)一個(gè)元素以及其所有子元素進(jìn)行編碼(和解碼),則從編碼的元素中刪除為確保前向兼容性而添加的字段38、42(包含模式號(hào)碼),從而增大了結(jié)果壓縮比。
下表定義了模式狀態(tài)代碼的可能的值。
表3
其中“no change(無更改)”是指用于元素的解碼過程的模式與用于該元素本身的模式相同。因此,元素32不包含模式號(hào)碼字段38和替換模式字段42。
“freeze the schema(凍結(jié)模式)”是指用于元素以及該元素的所有子元素(該元素的所有子樹)的解碼過程的模式與用于該元素本身的模式相同。因此,元素32以及該元素的所有子元素不包含任何模式號(hào)碼字段38、42和模式狀態(tài)字段5。
“change the schema(更改模式)”是指元素的模式已更改。因此,在元素32中存在模式號(hào)碼字段38、42。
圖5說明了由模式狀態(tài)代碼控制的機(jī)理。該圖描述了包括主元素51的結(jié)構(gòu)化文檔的樹結(jié)構(gòu),其中主元素51又包含三個(gè)子元素52、53、54。元素52包括兩個(gè)子元素55、56,元素54包括三個(gè)子元素57、58、59。元素55包括兩個(gè)子元素60、61。
元素51、53、54、57和59用設(shè)置為0(“no change”)的模式狀態(tài)代碼5進(jìn)行編碼。這些元素不包含任何模式號(hào)碼字段38、42。元素52的模式狀態(tài)代碼5被設(shè)置為10(“freeze theschema”)。因此,元素52的所有子元素55、56和60、61用元素52中定義的相同模式進(jìn)行編碼,且這些子元素不包含任何模式號(hào)碼字段38、42,和模式狀態(tài)代碼字段5。
元素58在另一個(gè)模式中經(jīng)過修改并定義為包括兩個(gè)子元素62、63。因此,元素58的模式狀態(tài)代碼5被設(shè)置為11(“change the schema”)。如果元素62和63在與元素58的相同模式中進(jìn)行定義,則元素62和63的模式狀態(tài)代碼5被設(shè)置為0。
可以通過向模式狀態(tài)代碼5添加一個(gè)可能的值來執(zhí)行進(jìn)一步的優(yōu)化,如下所示表4
當(dāng)元素的模式狀態(tài)代碼被設(shè)置為110或111時(shí),元素的模式被更改。如果此代碼被設(shè)置為110,則后者的子元素包含模式狀態(tài)方式字段5。當(dāng)此代碼被設(shè)置為111時(shí),該元素的所有子元素都使用該元素的模式進(jìn)行編碼。
在圖5的示例中,元素58的模式狀態(tài)代碼可以設(shè)置為111以便規(guī)定元素62和63在與元素58的相同的模式中進(jìn)行定義。因此,在元素62和63中不需要模式狀態(tài)代碼字段5。
權(quán)利要求
1.一種編碼方法,用于使解碼器至少部分地對(duì)結(jié)構(gòu)化文檔進(jìn)行解碼,該結(jié)構(gòu)化文檔具有在該解碼器不能訪問的至少第一模式中定義的結(jié)構(gòu),并由該解碼器能夠訪問的至少第二模式中的變化產(chǎn)生,該結(jié)構(gòu)化文檔包括彼此嵌套的信息元素,該文檔的信息元素在至少第一和第二模式中與相應(yīng)的元素類型關(guān)聯(lián),該元素類型的每一個(gè)定義該信息元素的相應(yīng)的元素結(jié)構(gòu),該第一模式不能被解碼器訪問,該第二模式可以被解碼器訪問,該第一模式定義至少一個(gè)由該第二模式中定義的對(duì)應(yīng)元素派生而來的派生信息元素,該編碼方法包括下列步驟使用所述的第一和第二模式將文檔編碼為二進(jìn)制流,對(duì)于該文檔的每一個(gè)信息元素,該二進(jìn)制流包括對(duì)該信息元素進(jìn)行編碼的二進(jìn)制序列,以及在對(duì)派生信息元素進(jìn)行編碼的二進(jìn)制序列中插入一個(gè)指定第一模式的引用,在該第一模式中定義了該派生元素的結(jié)構(gòu),所述的指定第一模式的引用在一個(gè)模式引用列表中進(jìn)行定義,該模式引用列表包含對(duì)用于編碼文檔的所有模式的引用,該模式引用列表可以被解碼器訪問。
2.根據(jù)權(quán)利要求1所述的編碼方法,其中,對(duì)文檔的每一個(gè)元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,該內(nèi)容字段中包含元素的編碼值,以及放在該內(nèi)容字段前面的長度字段,該長度字段中包含該內(nèi)容字段的長度的編碼值。
3.根據(jù)權(quán)利要求2所述的編碼方法,其中,派生信息元素在第一模式中與相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被限制的一種結(jié)構(gòu)類型關(guān)聯(lián),對(duì)派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段和追加于該內(nèi)容字段的在第二模式中定義的對(duì)第一模式的引用和對(duì)派生元素的結(jié)構(gòu)類型的引用。
4.根據(jù)權(quán)利要求2或3所述的編碼方法,其中,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被擴(kuò)展,該派生信息元素的結(jié)構(gòu)類型包括具有在第二模式中定義的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型的第一部分,對(duì)該派生信息元素特定的并具有第一模式中定義的結(jié)構(gòu)類型的第二部分,對(duì)該派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,該內(nèi)容字段包括包含對(duì)第二模式的引用的字段,包含對(duì)第二模式中的對(duì)應(yīng)元素的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,包含第一部分的編碼值的字段,包含對(duì)第一模式的引用的字段,包含對(duì)第二部分的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,以及包含所述的第二部分的編碼值的字段。
5.根據(jù)權(quán)利要求1到4中的任何一個(gè)所述的編碼方法,其中,對(duì)信息元素進(jìn)行編碼的二進(jìn)制序列包括替換字段,該替換字段包括指出該信息元素的名稱是否更改的替換標(biāo)志,如果替換標(biāo)志指出更改,則還包括元素名稱引用字段,該元素名稱引用字段包含指定該信息元素的新名稱的引用,以及模式引用字段,該模式引用字段包含對(duì)其中定義了新名稱引用的模式的引用。
6.根據(jù)權(quán)利要求1到5中的任何一個(gè)所述的編碼方法,其中,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出該信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),以及指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),當(dāng)該模式狀態(tài)方式字段處于第一狀態(tài)時(shí),被編碼的信息元素包括任何模式引用和任何其他更改信息,當(dāng)該模式狀態(tài)方式字段處于第二狀態(tài)時(shí),該信息元素的所有子元素都不包括模式引用和任何其他更改信息。
7.根據(jù)權(quán)利要求1到5中的任何一個(gè)所述的編碼方法,其中,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出該信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),以及指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素被更改,并且該信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第四狀態(tài),當(dāng)該模式狀態(tài)方式字段處于第一狀態(tài)時(shí),被編碼的信息元素包括任何模式引用和任何其他更改信息,當(dāng)該模式狀態(tài)方式字段處于第二狀態(tài)或第四狀態(tài)時(shí),該信息元素的所有子元素都不包括模式引用和任何其他更改信息。
8.根據(jù)權(quán)利要求1到7中的任何一個(gè)所述的編碼方法,其中,包括對(duì)用于編碼結(jié)構(gòu)化文檔的所有模式的引用的模式引用列表被插入在與編碼該結(jié)構(gòu)化文檔的二進(jìn)制流關(guān)聯(lián)的標(biāo)頭中。
9.一種解碼方法,用于至少部分地對(duì)二進(jìn)制流進(jìn)行解碼,該二進(jìn)制流對(duì)結(jié)構(gòu)化文檔進(jìn)行編碼,該結(jié)構(gòu)化文檔具有在該解碼器不能訪問的至少第一模式中定義的結(jié)構(gòu),且由解碼器能夠訪問的至少第二模式中的變化產(chǎn)生,該結(jié)構(gòu)化文檔包括彼此嵌套的信息元素,該文檔的信息元素在至少第一和第二模式中與相應(yīng)的元素類型關(guān)聯(lián),該元素類型的每一個(gè)定義該信息元素的相應(yīng)的元素結(jié)構(gòu),該第一模式不能被解碼器訪問,該第二模式可以被解碼器訪問,該第一模式定義至少一個(gè)由第二模式中定義的對(duì)應(yīng)元素派生而來的派生信息元素,該解碼方法包括下列步驟使用該第二模式連續(xù)地讀取和解碼對(duì)該結(jié)構(gòu)化文檔進(jìn)行編碼的二進(jìn)制流,并在該二進(jìn)制流中檢測(cè)對(duì)該文檔的每一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列,在被編碼的元素的二進(jìn)制序列中檢測(cè)對(duì)第一模式的引用,如在解碼器所知道的模式引用列表中所定義的那樣,從所述的模式引用的檢測(cè)中標(biāo)識(shí)相對(duì)于所述的第一模式的二進(jìn)制數(shù)據(jù),以及在所述的二進(jìn)制流的連續(xù)讀取和解碼期間跳過相對(duì)于所述的第一模式的所述二進(jìn)制數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的解碼方法,其中,對(duì)文檔的每一個(gè)元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,該內(nèi)容字段中包含該元素的編碼值,以及放在該內(nèi)容字段前面的長度字段,該長度字段中包含長度編碼值,該長度編碼值被解碼器用來確定對(duì)元素進(jìn)行編碼的二進(jìn)制序列的結(jié)尾。
11.根據(jù)權(quán)利要求10所述的解碼方法,進(jìn)一步包括下列步驟讀取和解碼在包含對(duì)第一模式的引用的二進(jìn)制序列中的長度編碼值,以及確定作為被解碼的長度值和在對(duì)第一模式的引用的二進(jìn)制序列中的位置的函數(shù)的要跳過的二進(jìn)制數(shù)據(jù)的長度。
12.根據(jù)權(quán)利要求9到11中的任何一個(gè)所述的解碼方法,其中,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于在第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被限制,對(duì)該派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,和追加于該內(nèi)容字段的在第二模式中定義的對(duì)第一模式的引用和對(duì)該派生元素的結(jié)構(gòu)類型的引用。
13.根據(jù)權(quán)利要求9到12中的任何一個(gè)所述的解碼方法,其中,派生信息元素在第一模式中與一種結(jié)構(gòu)類型關(guān)聯(lián),該結(jié)構(gòu)類型相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型被擴(kuò)展,該派生信息元素的結(jié)構(gòu)類型包括具有在第二模式中定義的對(duì)應(yīng)的信息元素的結(jié)構(gòu)類型的第一部分,以及對(duì)該派生信息元素特定的并具有在第一模式中定義的結(jié)構(gòu)類型的第二部分,對(duì)該派生元素進(jìn)行編碼的二進(jìn)制序列包括內(nèi)容字段,該內(nèi)容字段包括包含對(duì)第二模式的引用的字段,包含對(duì)第二模式中的對(duì)應(yīng)元素的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,包含第一部分的編碼值的字段,包含對(duì)第一模式的引用的字段,包含對(duì)第二部分的結(jié)構(gòu)類型的結(jié)構(gòu)類型引用的字段,以及包含所述的第二部分的編碼值的字段。
14.根據(jù)權(quán)利要求9到13中的任何一個(gè)所述的解碼方法,其中,派生信息元素在第一模式中具有相對(duì)于第二模式中的對(duì)應(yīng)的信息元素的名稱被更改的名稱,對(duì)該派生元素進(jìn)行編碼的二進(jìn)制序列包括替換字段,該替換字段包括指出該派生信息元素的名稱是否更改的替換標(biāo)志,以及如果該替換標(biāo)志指出更改,則還包括模式引用字段,該模式引用字段包含對(duì)第一模式的引用,以及指定第一模式中的該派生信息元素的名稱的元素名稱引用。
15.根據(jù)權(quán)利要求9到14中的任何一個(gè)所述的解碼方法,其中,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出該信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),以及指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),當(dāng)該模式狀態(tài)方式字段處于第一狀態(tài)時(shí),被編碼的信息元素不包括任何模式引用和任何其他更改信息,當(dāng)該模式狀態(tài)方式字段處于第二狀態(tài)時(shí),該信息元素的所有子元素都不包括模式引用和任何其他更改信息。
16.根據(jù)權(quán)利要求9到14中的任何一個(gè)所述的解碼方法,其中,對(duì)編碼文檔中的至少一個(gè)信息元素進(jìn)行編碼的二進(jìn)制序列包括模式狀態(tài)方式字段,該模式狀態(tài)方式字段具有指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素沒有更改的第一狀態(tài),指出該信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第二狀態(tài),指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素更改的第三狀態(tài),以及指出該信息元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素被更改,并且該信息元素的所有子元素在第一模式中相對(duì)于第二模式中的對(duì)應(yīng)元素都沒有更改的第四狀態(tài),當(dāng)該模式狀態(tài)方式字段處于第一狀態(tài)時(shí),被編碼的信息元素包括任何模式引用和任何其他更改信息,當(dāng)該模式狀態(tài)方式字段處于第二狀態(tài)或第四狀態(tài)時(shí),該信息元素的所有子元素都不包括模式引用和任何其他更改信息。
17.根據(jù)權(quán)利要求9到16中的任何一個(gè)所述的解碼方法,其中,包括對(duì)用于編碼結(jié)構(gòu)化文檔的所有模式的引用的模式引用列表在與編碼該結(jié)構(gòu)化文檔的二進(jìn)制流關(guān)聯(lián)的標(biāo)頭中讀取。
全文摘要
一種編碼方法,允許解碼器至少部分地對(duì)具有解碼器不能訪問的第一模式中的定義的結(jié)構(gòu)的,且由解碼器能夠訪問的第二模式中的變化產(chǎn)生的結(jié)構(gòu)化文檔進(jìn)行解碼,該第一模式定義至少一個(gè)由該第二模式中定義的對(duì)應(yīng)元素派生而來的信息元素,該編碼方法包括下列步驟使用所述的第一和第二模式將文檔編碼為二進(jìn)制流,對(duì)于文檔的每一個(gè)信息元素,包括對(duì)元素進(jìn)行編碼的二進(jìn)制序列,在對(duì)派生信息元素進(jìn)行編碼的二進(jìn)制序列中插入一個(gè)指定第一模式的引用,在該模式中,定義了派生元素的結(jié)構(gòu),所述的指定第一模式的引用在一個(gè)包含對(duì)用于編碼文檔的所有模式的引用的模式引用列表中進(jìn)行定義,該模式引用列表可以被解碼器訪問。
文檔編號(hào)H03M7/30GK1552126SQ02804588
公開日2004年12月1日 申請(qǐng)日期2002年2月4日 優(yōu)先權(quán)日2001年2月5日
發(fā)明者克勞得·塞拉, 賽德瑞克·斯諾特, 克 斯諾特, 克勞得 塞拉 申請(qǐng)人:捷通公司