CN101040444A - 自适应压缩方案 - Google Patents

自适应压缩方案 Download PDF

Info

Publication number
CN101040444A
CN101040444A CNA2005800351863A CN200580035186A CN101040444A CN 101040444 A CN101040444 A CN 101040444A CN A2005800351863 A CNA2005800351863 A CN A2005800351863A CN 200580035186 A CN200580035186 A CN 200580035186A CN 101040444 A CN101040444 A CN 101040444A
Authority
CN
China
Prior art keywords
sign
structured document
grade
code data
compression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800351863A
Other languages
English (en)
Other versions
CN101040444B (zh
Inventor
刘志刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Nokia Oyj
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of CN101040444A publication Critical patent/CN101040444A/zh
Application granted granted Critical
Publication of CN101040444B publication Critical patent/CN101040444B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Document Processing Apparatus (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种压缩结构化文档的装置和方法。对结构化文档搜索一次以寻找第一和第二标志,一个第一标志表示结构化文档的一个元素的开始,并且一个第二标志表示结构化文档的一个元素的结束。当在搜索步骤中遇到一个第一标志时,输出第一标志的一个代表并递增等级计数器,等级计数器的值表示元素位于结构化文档中的哪个等级。当在搜索步骤中遇到一个第二标志时,输出一个第二代码数据并递减等级计数器。

Description

自适应压缩方案
技术领域
本发明涉及一种用于压缩例如XML(可扩展标记语言)或HTML(超文本标记语言)文档的结构化文档的方法和装置。
背景技术
作为标记语言的一个示例,XML是用于数据的呈现、交换和管理的重要技术。特别是,它成为了用于因特网服务和应用的关键构建组件。
XML在描述数据方面是很强大和灵活的。但是,一个缺点是它的冗长。那是由于呈现在一个XML文档中的标记(例如,标签)。尽管这是对于诸如简单和灵活性的XML的优点所付的必要代价,但它还是意味着对于XML文档的更大的存储空间、更多的网络资源和更长的传输延迟。在移动环境中,例如具有有限的存储和通过带宽受限的连接来连接到因特网的移动设备中的网络服务/应用,这可能是特别成问题的。
数据压缩已经用于解决冗长的问题。通用和XML特殊的压缩算法两者在(下文将描述的)文献中都已经呈现了。但是,它们有局限性。
在下文中,给出了对XML文档的逻辑结构的简短介绍。XML文档包含一个或多个元素。每个元素用一个start-tag(起始-标签)开始并用一个end-tag(结束-标签)结束。Start-(起始-)和end-tag(结束-标签)中的名称给出了元素的类型。start-tag可以包含元素的属性规格,其形式为属性名称和数值对。start-tag和end-tag之间的文字是元素的内容,它能够是字符数据或另一个元素。以这种方式,XML文档中的所有元素逻辑上形成一个树,该树对每个文档具有精确的一个根元素。也有特殊类型的没有内容的元素。它们称为空元素。除了前面提到的规则格式之外,一个空元素也能够用一个特殊的空元素标签表示(即,没有分离的start-和end-tag)。除了start-(起始-)和end-tag(结束一标签)之外,在XML文档中可以有其他标记,比如注释、处理指令、CDATA段、文档类型声明、XML声明等。
图6示出了一个XML文档的一般结构的示例。如图6所示,一个XML文档包含多个元素,每个元素标志有一个start-tag和end-tag,它们之间是元素的内容。例如,<CATALOG>和</CATALOG>是元素CATALOG的start-tag和end-tag。一个元素可以包含其他的元素,它称为“嵌套的”、“嵌入的”或“子”元素。例如,元素CATALOG包含很多像它的孩子一样的元素CD。
XML文档能够用通用数据压缩算法(下文中称为通用算法)进行压缩,比如LZ(Ziv和Lempel)算法族。这能够导致相当好的压缩比。但是,通用算法没有充分利用XML的特点,而这些特点可能导致在压缩比、CPU负载和存储器消耗方面更好的性能。特别是,大多数压缩算法需要相当大量的存储器。
已经采用了很多XML特殊压缩算法来进一步提高通用算法的压缩性能。一些特殊压缩算法是:
XMill(H.Liefke和D.Suciu在2000年5月的关于数据管理的2000ACM SIGMOD国际会议纪要上的:“Xmill:an EfficientCompressor for XML Data”,第153-164页)。它基于三个原理:从数据中分离出结构(标签和属性),将相关数据项目分组为容器,并且对不同的容器应用语义(即,特殊化的)压缩器。XMill以大致相同的速度表现出了关于gzip上的压缩比的改进。但是,它具有某种限制:a)不能够适合于即时压缩,因为它需要在应用gzip之前重建原始XML文档中的数据到多个容器中;b)对于小(<20KB)XML文档执行得比gzip更差,因此对于一般包含小XML文档的XML消息没有用;c)需要大量的存储器,例如对每个容器默认8MB;d)语义压缩器需要人的交互作用;e)不首先对数据解压缩就不能查询压缩数据。XGRIND(P.M.Tolani和J.R.Haritsa在2002年2月的关于数据工程的第18次国际会议纪要上的:“XGRIND:AQuery-friendly XML Compressor”)和XPRESS(J.-K.Min,M.-J.Park和C.-W.Chung在2003年6月的关于数据管理的2003 ACM SIGMOD国际会议纪要上的:“XPRESS:A Queriable Compression for XMLData”,第122-133页)。以上两者都设计为可友好地查询。XPRESS通过对于标签反转算法编码(代替字典代码编码)和对于数据值的类型特定的编码的使用对XGRIND进行了改进。但是,它们具有以下缺点:a)XGRIND需要DTD(文档类型声明)来识别列举的-类型属性;b)XGRIND和XPRESS两者都需要对原始XML文档进行两次扫描:第一次扫描以收集文档的统计数字和第二次扫描来压缩。这意味着它不能适用于在线压缩;d)缓慢的压缩速度,这主要是由于两次扫描方案。
WBXML(2001年7月25日的无线应用协议:Binary XML ContentFormat Specification,1.3版)。这个标准定义了XML的二进制表示。基本上,编码器基于其结构为XML文档设置标号。它的缺点是:a)有损压缩:所有注释、XML声明、和文档类型声明将不在压缩期间保存(它们必须被删除);b)需要至少两过程(two-pass)压缩,因为字符串表格在设置了标号的文档主体之前,这需要参考字符串表格。这减慢了压缩并且也意味着它不能够适用于在线压缩;c)对于处理XML的未来改变没有灵活性;d)对空白空格字符不进行压缩。
而且,美国专利申请No.2002 0065822公开了一种结构化文档压缩方案,其中具有通用数据结构的多个结构化文档用单个标签列表压缩。压缩器必须预先获知一个文档具有与标签列表相同的结构。因而,这种压缩方案具有有限的应用性。而且,如果压缩器预先不知道文档结构,则需要两过程。XML文档中的所有标签被提取并放到标签列表中。除了压缩后的XML文档,压缩器还单独地发送标签列表。此外,假定在一个文档中标签以与标签列表完全相同的顺序出现。否则,压缩将是有损的。
而且,在日本公开申请No.2003157249A中,描述了文档压缩和存储方法。形成一个压缩结果索引(CRX)并将其存储在XML数据库中,压缩结果索引指定了一个节点、原始组件和分配给对应于一个可扩展标记语言(XML)文档的方案的每个节点的部分的文档标识符之间的关系。通过设置对应于保存的CRX的一组组件标识符形成一个压缩结果设置(CRS)。
发明内容
本发明的一个目的是提供一种对于结构化文档的改进的压缩/解压缩方案,它是快速的并且具有低存储器消耗。
本发明介绍了一种用于诸如XML和HTML文档的结构化文档(即,具有标记语言特征的文档)的压缩方法,它是快速的并具有低存储器消耗。能够创建一种使得人类可读的压缩文档。该压缩方法是自适应的,即它不需要对于XML文档的DTD(文档类型声明)或XML方案的任何先前知识。此外,它只需要原始XML文档上的一个过程并且因此能够适用于在线压缩。这个想法是编码器解析一个XML文档并且为元素标签和元素内容中的选择性字符数据即时建立分等级的字典。字典用于压缩连续的元素标签和相同扫描内对应等级处的内容。字典隐含地在压缩文档中发送,使得解码器能够重新建立分等级的字典并对压缩文档解压缩。
按照本发明的压缩方案是自适应的,即假定没有关于输入XML文档的在先知识。特别是,它不依赖于用DTD(文档类型声明)或XML方案描述的文档语法的先前知识。单过程(single-pass)支持在线压缩,因为不需要缓冲整个XML文档。
按照本发明,由于分等级的字典方法和关注于元素标签,能够实现与现有算法相比快很多的压缩速度和更少的存储器消耗。这对于通常具有有限资源的移动设备尤其有用。它也有助于支持XML文档压缩的服务器的可扩展性。
对于在网页浏览中出现的最典型的一种小(例如<20KB)的XML文档有良好的压缩性能。此外,本发明的核心过程与现有技术相比更容易实现。本发明的压缩算法能够容易地与通用数据压缩算法组合以实现高压缩比。
压缩方案是同类型的,即在压缩数据中保存原始XML数据的结构。这允许对压缩的XML数据直接进行查询。
附图说明
图1示出了表示按照本发明的实施例的压缩方法的流程图,
图2更详细地示出了表示图1中的流程的一部分流程图,
图3示出了表示按照本发明的实施例的解压缩方法的流程图,
图4示出了表示按照本发明的实施例的压缩装置的示意性框图,
图5示出了表示按照本发明的实施例的解压缩装置的示意性框图,
图6示出了一个XML文档结构的示例,
图7示出了图6的XML文档示例的逻辑图,
图8示出了从按照本发明的压缩方案的XML文档示例形成的不同等级的字典,
图9示出了从按照本发明的压缩方案的XML文档示例生成的压缩的XML文档,
图10示出了按照本发明的解压缩方案的从压缩的XML文档重新构建的字典。
具体实施方式
如图7所示,一个XML文档中所有的元素都用树结构逻辑地进行组织。每个XML文档只有一个根元素。按照图6所示的示例,CATALOG是根元素。这个根元素包含其子元素(该示例中的CD),并且这些子元素依次包含它们自己的子元素(TITLE(标题)、ARTIST(艺术家)、COUNTRY(国家)、COMPANY(公司)、PRICE(价格)、YEAR(年份))等等。
按照本发明,为在树中的元素(即,节点)分配等级号码。从而,根元素具有等级0,根元素的子元素具有等级1,等等。利用这个树结构来生成用于不同等级元素的不同字典并只用在该元素的等级的字典压缩一个元素。图8示出了从图6的XML文档示例形成的在不同等级的字典。对结构化文档中每个等级单独形成字典将在下文中更详细地描述。
将注意到XML只是可应用格式的一个示例。本发明可简单地应用到具有标记语言特征的其他格式。
最初,一个诸如图4所示的压缩装置40的压缩器设置一个设为空的字典。它也设置一个参数current_level(当前等级)为0。接着,压缩器线性地扫描一个XML文档。将注意到压缩器只需要经过文档的单过程。
当压缩器遇到一个例如图8所示的<CATALOG>的start-tag时,压缩器将搜索在current_level的字典中的start-tag。如果发现匹配,就输出在current_level的字典的一个参考。如果没有发现匹配,就将start-tag添加到在current_level的字典中并且该标签不经压缩地输出。在以上两种情况下,参数current_level递增。
如图8所示,<CATALOG>添加到等级0字典,并且如图9所示<CATALOG>未经压缩地输出。接着,遇到一个start-tag<CD>。因为也是第一次遇到<CD>,即没有对应的条目在current_level,即等级1的字典中,<CD>添加到等级1字典并如图9所示未经压缩地输出,图9表示从图6的XML文档示例生成一个压缩的XML文档。参数current_level递增并且继续扫描。接着,遇到一个start-tag<TITLE>。因为在current_level,即等级2的字典中没有发现匹配,所以<TITLE>添加到等级2字典,如图9所示未经压缩地输出并且参数current_level递增。
当压缩器遇到一个end-tag时,压缩器输出一个特殊代码字以通知当前元素结束并且将参数current_level递减。将注意到end-tag将不添加到字典,因为它们能由解压缩器从对应的start-tag导出。
如图8所示,在<TITLE>之后,压缩器遇到一个end-tag</TITLE>。输出一个特殊代码字,例如图9所示的“END_TAG”,并且参数current_level递减。
从而,当遇到下一个start-tag,例如图8所示的<ARTIST>时,因为在current_level,即等级2的字典中没有发现匹配,所以就将<ARTIST>添加到等级2的字典中并且将其如图9所示未经压缩地输出。
在current_level的字典中发现匹配的情况下,例如当在如图8所示的第二次遇到start-tag<CD>和<TITLE>时,如图9所示输出对于字典的一个参考。
作为一种选择,如果压缩器知道将被压缩的XML文档,则压缩器可以甚至在压缩之前预先植入字典。
如能够从图9看到的,没有生成单独的字典。它们“嵌入”到压缩的XML文档中。START_TAG和END_TAG是用于压缩的特殊代码字(或信号)。在实现时,它们能够进行选择以具有不能出现在XML的字母表中的值。不需要指明START_TAG的current_level,因为解压缩器能够导出它。通常,START_TAG之后的一个索引用于指明在字典(在current_level)中的哪个条目对应于当前的start-tag。按照该示例,(START_TAG,0)指“<CD>”的等级是1,索引=0。但是,如果当前被压缩的start-tag的位置与字典中的start-tag的位置相同,则可以省略它。例如,START_TAG对应于<TITLE>、<ARTIST>等。
一个诸如图5所示的解压缩装置50的解压缩器基本上执行压缩器的反向操作,将在下文中参照图10对其进行描述。
最初,解压缩器将字典设置设为空。它还将参数current_level设为0。它接着线性地扫描一个接收到的压缩XML文档。它以与压缩器相同的方式跟踪current_level,即在遇到start-tag和end-tag后进行递增或递减。
当遇到一个未压缩的start-tag时,解压缩器将其复制输出,并将它添加到在current_level的字典中。以这种方式,如能够从图9和图10中看到的,解压缩器能够重建与压缩器完全相同的字典。当遇到一个压缩的start-tag时,解压缩器复制字典中对应的标签来输出。
当遇到一个end-tag代码字时,解压缩器基于它已经在相同等级处理过的最新的start-tag重建并输出end-tag。对于其他未压缩的数据,按照该示例,解压缩器将其直接复制来输出。
图1示出了表示按照本发明的一个实施例的上述压缩过程的流程图。
在搜索步骤S10,对一个诸如XML文档的结构化文档例如从结构化文档的开头到结尾搜索一次来寻找第一和第二标志,第一标志表示结构化文档的一个元素的开始,并且第二标志表示结构化文档的一个元素的结束。对上述示例进行假设,start-tag是第一标志,并且end-tag是第二标志。
当在搜索步骤中遇到一个第一标志时(步骤S1l中的“第一标志”),输出第一标志的代表(步骤S12),并且等级计数器递增(步骤S13),等级计数器的值表示一个元素在结构化文档中位于哪个等级。第一标志的代表可以是未压缩的第一标志或者对未压缩的第一标志的一个参考。
当在搜索步骤中遇到一个第二标志时(步骤S11中的“第二标志”),输出第二代码数据(步骤S14)并且等级计数器递减(步骤S15)。在步骤S16中,检查文档是否已经搜索了一次。如果没有,程序返回到步骤S10并且继续搜索。
如图2所示,图2更详细地表示了当第一次遇到第一标志时(在步骤S22中的是),A:遇到第一标志,和B:递增等级计数器之间的程序,第一标志的代表是第一标志,即第一标志未经压缩地输出(步骤S25)。当第二次或更多次遇到第一标志时(在步骤S22中的否),第一标志的代表是对第一次遇到第一标志时输出的第一标志的代表的参考。该参考在步骤S23中输出。考虑到图8和图9,第二次遇到的<CD>的参考是对嵌入到压缩文档中的字典的参考,即对未压缩的输出<CD>的参考。分别在步骤S27和S24之后,等级计数器递增。为了更快地确定一个第一标记是否是第一次出现,结构化文档的等级内第一标志的等级和第一标记的顺序可以用于确定第一标志是否是第一次遇到。
而且,如关于图8和图9所示,第一次遇到第一标志的代表形成一个字典,其中对结构化文档的每个等级单独形成字典。
第二次或更多次遇到第一标志的一个代表是一个第一代码数据,比如“START_TAG”。
第一代码数据可以包括一个索引,该索引的值表示在结构化文档的一个等级内第一标志的顺序。
在搜索步骤中,也可以对结构化文档中的元素执行搜索。当在搜索步骤中第一次遇到一个元素的内容时,该元素的内容像它原来一样地输出,并且当在搜索步骤中第二次或更多次遇到该元素的内容时,输出对第一次遇到该元素的内容时输出的元素内容的参考,从而为每个等级的结构化文档单独形成字典。
元素可以包括至少一种类型的字符数据、注释和处理指令。可以单独为每种类型的元素提供第一和第二代码数据。
而且,在搜索步骤中,可以执行对诸如结构化文档中的一种空元素标志的特定标志的搜索,其中当遇到一个特定标志时,输出一个特定代码数据。
图3示出了表示按照本发明的实施例的上述解压缩过程的流程图。当解压缩一个压缩的诸如XML文档的结构化文档时,针对第一标志和第二代码数据的代表,例如从压缩的结构化文档的开始到结尾,搜索压缩的结构化文档一次(步骤S300),其中压缩的结构化文档包括第一标志的代表,该代表包括未压缩的第一标志和第一代码数据、和表示第二标志的第二代码数据,其中第一标志表示结构化文档的一个元素的开始,并且第二标志表示结构化文档的一个元素的结束。
当在搜索步骤中遇到未压缩的第一标志时(步骤S301和S320中的“第一标志”),输出未压缩的第一标志(步骤S303),将未压缩的第一标志添加到字典(步骤S304),并且递增等级计数器(步骤S305),等级计数器的值表示一个元素位于压缩的结构化文档中的哪个等级,从而单独对压缩的结构化文档的每个等级形成字典。
当在搜索步骤中遇到第一代码数据时(步骤S320中的“第一代码数据”),从对应等级的字典输出对应的未压缩的第一标志(步骤S306)并且递增等级计数器(步骤S307)。
当在搜索步骤中遇到第二代码数据时(步骤S301中的“第二代码数据”),重建第二标志(步骤S308),输出第二标志(步骤S309)并且递减等级计数器(步骤S310)。
可以使用包括在第一代码数据中的一个索引值来在字典中搜索对应的未压缩的第一标志,该索引值表示结构化文档的一个等级内第一标志的顺序。
而且,搜索步骤可以包括搜索在压缩的结构化文档中的元素和对元素的参考。在这种情况下,当在搜索步骤中遇到一个元素的未压缩内容时,该元素的内容像它原来一样地输出并且将该元素的内容添加到字典中,并且当在搜索步骤中遇到一个元素的参考时,从字典输出该元素的相应内容。
图4示出了表示按照本发明实施例的用于压缩一个结构化文档的装置的示意框图。该装置包括一个搜索块41、一个输出块42和一个计数块43。搜索块41对一个结构化的未压缩文档进行一次针对第一和第二标志的搜索。
当搜索块41遇到一个第一标志时,输出块42输出第一标志的一个代表,并且计数块43递增等级计数器,等级计数器的值表示一个元素位于结构化文档中的哪个等级。
当搜索块41遇到一个第二标志时,输出块42输出第二代码数据,并且计数块43递减等级计数器。从输出块输出的数据或信号形成一个压缩文档。
当搜索块41第一次遇到一个第一标志时,输出块42可以输出该第一标志。当搜索块41第二次或更多次遇到一个第一标志时,输出块42可以输出一个当第一次遇到第一标志时输出的第一标志代表的参考。为此,可以形成如图4所示的本地字典,从而输出块42能够将当前第一标记与当前等级的字典相比较。当然,字典只用于在本地压缩。它不是压缩文档的一部分。可选地,输出块42可以读取用于比较操作的压缩文档。
输出块42可以输出作为第二次或更多次遇到的第一标志的代表的第一代码数据并且将一个索引添加到第一代码数据,索引的值表示结构化文档的等级内第一标志的顺序。
搜索块41可以搜索结构化文档中的元素,其中当第一次遇到一个元素的内容时,输出块42可以像它原来一样地输出该元素的内容,并且当第二次或更多次遇到该元素的内容时,输出块可以输出当第一次遇到该元素的内容时输出的元素内容的参考,从而形成单独用于结构化文档的每个等级的字典。
搜索块41可以搜索结构化文档中的特定标志,其中当遇到一个特定标志时,输出块42可以输出一个特定代码数据。
按照压缩装置40,搜索块41读取未压缩的文档并且收集来自未压缩文档的特定数据。输出块42输出数据以形成压缩文档,但是也可以读取压缩文档并且从中收集数据。输出块42从搜索块41接收例如strat-tag和end-tag的收集到的数据和来自计数块43的等级信息,并基于该等级信息使用已经输出到压缩文档的数据处理接收到的数据。
图5示出了表示按照本发明实施例的用于解压缩一个压缩结构化文档的装置的示意框图。压缩结构化文档包括第一标志的代表,该代表包括未压缩的第一标志和第一代码数据、以及表示第二标志的第二代码数据,其中第一标志表示结构化文档的一个元素的开始,并且第二标志表示结构化文档的元素的结束。该装置包括一个搜索块51、一个计数块52、一个求和块53、一个重建块54和一个输出块55。
搜索块51对压缩的结构化文档进行一次针对第一标志和第二代码数据的代表的搜索。
当搜索块51遇到未压缩的第一标志时,求和块53将未压缩的第一标志添加到字典中,从而为压缩的结构化文档的每个等级单独形成字典。此外,输出块55输出未压缩的第一标志,并且计数块52递增等级计数器,等级计数器的值表示一个元素位于压缩的结构化文档中的哪个等级。
当搜索块51遇到第一代码数据时,输出块55从对应等级的字典输出一个对应的未压缩的第一标志,并且计数块52递增等级计数器。
当搜索块51遇到第二代码数据时,重建块54重建一个第二标志,输出块55输出由重建装置重建的第二标志,并且计数块52递减等级计数器。
输出块55可以使用包括在第一代码数据中的索引值在字典中搜索对应的未压缩的第一标志,该索引值表示结构化文档的一个等级内第一标志的顺序。
搜索块51可以搜索压缩的结构化文档中的元素和元素的参考,其中当搜索块51遇到一个元素的未压缩内容时,输出块55可以像原来一样地输出该元素的内容,并且求和块53可以将元素的内容添加到字典,并且当搜索块51遇到一个元素的参考时,输出块可以从字典输出该元素的对应内容。
按照图5中的解压缩装置50,搜索块读取压缩文档并且从中收集特定数据。输出块55输出数据以形成解压缩的文档。由求和块53生成一个字典。输出块55基于从计数块接收的等级信息使用字典处理从搜索块51接收的数据,并且输出处理后的数据以形成解压缩的文档。重建块54使用等级信息和用于重建数据的字典,该重建数据接着由输出块55输出以形成解压缩的文档。
将注意到图A4和图A5表示用于解释本发明的压缩方案的压缩器和解压缩器的部分。压缩装置40和解压缩装置50当然可以包括其他部分。而且,图A4和图A5中的块可以一起分组或者可以进一步划分为子块。
本发明也可以通过计算机程序和执行处理器可实现指令的信号来实现。
如上所述,本发明的关键思想是采用XML文档中元素的树结构,使得一个压缩器能够即时地构建用于标志或元素标签(即名称和属性)的分等级的字典集。特别是,压缩器跟踪当前将被压缩的元素的等级,并只使用在对应等级的字典压缩元素标签。因为在相同等级处的元素名称/属性将可能重复,与通用算法相比压缩器花更少的时间来进行字符串匹配。此外,因为元素标签通常是XML文档最冗长的部分(见图6的示例),本发明只需要很少量的存储器(用于字典的存储)和很少的CPU时间来实现良好的压缩比。
随后,将按照本发明的实现示例描述诸如压缩装置40的压缩器和诸如解压缩装置50的解压缩器的操作。
压缩程序
压缩器保持计数器来跟踪一个元素的当前等级,它指current_level或cur_level(当前等级)。在压缩程序的开始,cur_level初始化为0(零)。最初对于元素标签也没有字典。
对于一个给定的XML文档,压缩器线性地对于一个新元素的开始(即start-tag)和结束(即end-tag)解析XML文档。如果遇到start-tag,压缩器相对于cur_level的标签字典对其进行压缩,该标签字典是指tag_dict[cur_level]。这基本上包含搜索当前标签和tag_dict[cur_level]之间的匹配的字符串。参照tag_dict[cur_level]中的字符串编码一个匹配的字符串。一个不匹配的字符串由压缩器未经压缩地输出并且添加到tag_dict[cur_level]。一个压缩的start-tag将以特定代码字START_TAG开始,接着是编码的匹配和/或不匹配的字符串的序列。注意到cur_level的值不需要清楚地载入到压缩的start-tag中,因为解压缩器能够在本地导出它(见解压缩程序)。压缩完成后,压缩器将cur_level递增1。
应当注意,如果这是压缩器第一次访问该等级,则tag_dict[cur_level]还不存在。压缩器将创建一个tag_dict[cur_level]并且用当前的start-tag对其进行更新。
如果遇到一个end-tag,则压缩器简单地输出一个特定代码字END_TAG以通知当前元素的结束。压缩器不需要输出end-tag中的名称,因为它与start-tag中的名称相同并且解压缩器已经将start-tag解压缩。将end-tag压缩后,压缩器将cur_level递减1。将注意到压缩器不用end-tag更新tag_dict[cur_level]。尽管实际上很少发生,还是允许end-tag可以在结尾包含可选择的“空白空格”,它由一个或多个空格字符(0x20)、制表符(0x09)、换行(0x0A)或回车(0x0D)。如果是这样的情况,则压缩器能够用另一个代码字编码end-tag,该代码字例如为END_TAG_EXT,接着是可选择的“空白空格”和未压缩的“空白空格”本身的长度。
如果遇到一个空元素标签,则压缩器将其看作strat-tag的一种特殊情况。其操作与上述的常规strat-tag相同,但有如下的例外:a)压缩器不改变cur_level(概念上,压缩器输入一个空元素并且立刻退出);b)压缩器输出一个特殊代码字EMPTY_ELEM_TAG,它与START_TAG不同。这允许解压缩器消除它们之间的歧义。
也可能有这样的情况,那就是标签没有对应的end-tag。除了在这些标签后面可以是内容之外,这些标签能够与上述的empty-tag(空标签)类似地进行处理。
在图6所示的实例中,“TITLE”、“ARTIST”等全部在同一个等级。它们是元素“CD”的“子代”。它们将按照它们出现在输入XML文档中的顺序被添加到tag_dict[cur_level]。压缩器可以保持在每个等级遇到的元素的计数器,这可以表示为elem_count[cur_level]。压缩器在每次它从较高等级进入cur_level时将elem_count[cur_level]设置为零并且接着在处理了cur_level处的每个元素之后将其递增1。这允许压缩器执行两次最优化。首先,对于字符串匹配,压缩器能够试图首先比较当前标签和具有索引elem_count[cur_level]的tag_dict[cur_level]中的标签。这很可能造成“找到”(即良好匹配)并避免不必要的与tag_dict[cur_level]中的其他标签进行比较。如能够从图6的目录示例看出的,原因是相同等级的元素倾向于以一个XML文档中的相同顺序重复。在它失败的情况下(即没有匹配的),压缩器能够接着继续处理tag_dict[cur_level]处的其他标签。其次,压缩器可以利用该索引方案以具有更有效的编码。也就是,如果找到匹配,压缩器甚至不需要输出对tag_dict[cur_level]的参考。作为替代,它能够简单地输出一个代码字START_TAG_H(与规则的STRAT_TAG不同的代码字)以向解压缩器通知这种情况。因为解压缩器也跟踪elem_count[cur_level],所以它能够确定tag_dict[cur_level]中的哪个start-tag用作对压缩当前start-tag的参考。这允许在相同等级处多个元素的优化处理。
上述过程关注于压缩元素标签。它们消除了由XML引入的标记的大部分冗余(与普通文字文件相比较)。以下是一些能够与上述程序一起执行的一些可选择过程。它们提升了整体压缩比,但是花费了另外的存储器和CPU消耗。它是一种它们是否应当执行的关于执行的决定。
例如,在元素内容中的字符数据(即文字)也可以被压缩。为此,压缩器也能够对于元素内容中的字符数据创建字典,为每个等级创建一个字典。需要一个代码字。
而且,可以压缩元素标签之外的标记,例如注释和处理指令。压缩器能够为它们全部创建一个字典,或者为每种类型的标记创建一个字典,例如为注释创建一个字典,并且为处理指令创建另一个字典。后者可以减少字符串搜索时间并从而加快压缩。每种类型的压缩的标记需要一个代码字。
此外,可以压缩空格序列。压缩器能够使用简单运行长度编码来压缩一个空格序列,这通常可能出现在一些XML文档中。需要一个代码字。
将注意到所有上述过程在输入XML文档的单个扫描中执行。这是与很多现有的XML压缩方案的关键区别。
而且,按照本发明的压缩方案是自适应的。在上述过程之后,压缩器能够即时地学习并采用文档结构,而不需要关于XML文档的比如DTD或XML方案的任何先前知识。这是在依赖压缩算法的方案之上的另一个优点。
编码格式
压缩器的输出将是一个比特流,在其中压缩和未压缩的单元进行混合。一个压缩单元可以是一个压缩的元素标签、元素内容中的压缩字符数据、压缩注释等。接下来描述对于编码格式的基本原则。确切的格式可以根据实现方式而变化。
未压缩的字符从输入直接复制到输出。每个压缩单元的前面有在不出现在未压缩XML文档的字符集中的特殊代码字。解压缩器需要识别一个压缩单元并相应地对其进行解码。按照XML 1.0规范,在[0x00、0x1F]范围内的字符,除了0x09、0x0A和0x0D之外,将不出现在未压缩文档中。因此,如在压缩过程中提到的,它们(总共29个代码点)可以被用作特殊代码字(例如START_TAG)。代码字的确切的分配是实现方式问题,只要压缩器和解压缩器同样进行分配即可。注意到,在UTF-8编码(最普通的字符编码)下,代码字将作为它们的数字值表示为准确的比特图案。这简化了实现方式。
至于一个压缩单元的结尾,如果压缩单元的长度在那个特别单元的编码中自我解释,则其能够用另一个特殊代码字明确地表示或者隐含地导出。例如,一个END_TAG代码字不只表示原始XML文档中一个end-tag的存在,还标志了当前元素内容的结束,它的字符数据(如果存在的话)可以被压缩或解压缩。
如果实现可选择的过程,需要另外的代码字来表示元素标签之外的标记的开始和结束。它们可以从前述代码点空间(code pointspace)被赋值。
关于用于压缩strat-tag的粒度,基本上有两种情况。情况1:它能够在通用数据压缩算法之后,在字节等级进行。情况2:它能够用XML结构在较高等级进行。即,字符串匹配搜索在标签名称、属性名称和属性值的单元中进行。情况2的极端情况是作为一个整体压缩一个strat-tag,即当它与tag_dict[cur_level]中的一个标签精确匹配时。情况2允许更快的压缩,因为它通常需要较少时间进行字符串匹配。它也允许对压缩的start-tag的更有效编码。但是,它与情况1相比较可能丢失一些压缩比。这是在实现方式中的折衷。
紧跟着一个end-tag的换行符在XML文档中典型地出于可读性的目的。在这种情况下,能够使用一个代码字END_TAG_NEWLINE来进行编码。这节省了否则将由换行符所需的字节。
取决于标签字典的确切的结构,一个压缩的start-tag可能需要tag_dict[cur_level]中一个参考标签的索引的指示。一种选择是在一个START_TAG代码字后面明确地编码该索引。一种替换选择是使用几个用于strat-tag的代码字,使得它们中的每一个表示该索引的一个特定值。例如,START_TAG_0、START_TAG_1等。如果编码必须是字节对准的并且有可获得的代码字来使用,则这将是特别有用的。更通常的情况能够将其与明确的索引字段合并。即,1-字节代码字用于小索引值,并且一个单独的索引字段用于大索引值。
解压缩程序
一个压缩的XML文档作为比特流输入到一个解压缩器。该解压缩器按照以下过程处理压缩的XML文档。
与压缩器类似,解压缩器也保持cur_level、用于每个等级的tag_dict集、用于当前等级的elem_count和诸如内容字典的任意其他可选择的字典等。它们以与压缩器相同的方式被初始化。这组成解压缩器上下文。
解压缩器能够用上述代码字将压缩单元与未压缩单元相区别。如果遇到一个未压缩单元,单元中的字节直接复制到输出。如果遇到一个压缩单元(例如一个压缩标签),解压缩器使用对应的字典(例如tag_dict[cur_level])来解压缩该单元。此外,解压缩器以与压缩器相同的方式更新对应的字典(例如tag_dict[cur_level])和变量(例如cur_level,elem_count[cur_level])。这确保了在解压缩期间,解压缩器上下文保持与压缩器上下文前后一致。此外,这允许更有效的编码,因为不需要一些上下文变量(例如cur_level、elem_count[cur_level])以明确地在压缩的XML文档中发送。
实现方式备忘录
在实现方式中可能有很多不偏离于本发明范围的变形。对于变形的一个原因是发现压缩比、CPU花销和存储器消耗之间的良好折衷。总的来说,一个实现方式应当以关注于压缩元素标签的压缩过程开始,并使用用于字符串匹配的粗糙的粒度。这将导致最有效地使用CPU和存储器,因为它关注于属于XML文档最冗余部分的元素标签上的资源。在实践中,通常以这种方式用很小的存储器占用空间和CPU消耗来实现良好的压缩比。为了超出这种方式,一种实现方式可以采用选择性过程的使用,这可能以花费额外的CPU和存储器需求来提高压缩比。
在XML规范发展为前面提到的代码字成为XML字符集的一个常规部分的情况下,该方案能够通过使用保持在XML字符集之外的任意1-字节字符来适应。如果没有这样的字符,代码字能够映射到几乎不可能出现在XML文档中的1-字节字符。对于那些代码字也需要一个转义方案。其细节超出了本发明的范围之外。
应用一个元素标签的压缩的实现方式已经使用一个XML文档的小示例来加以测试。该文档具有于图6的示例中的那个结构类似的结构。为了比较,同一组文档也用DEFLATE进行压缩,DEFLATE为用于通用数据压缩的很好的压缩算法。以下是结果。它示出了新方案实现了与DEFLATE相比相当好的压缩比,但只需要一小部分CPU和存储器花销。注意,压缩性能取决于样本文件。以下结果应当只看作一个示例,而不作为性能的全面分析。然而,测试结果验证了按照本发明的方案的设计原理。
  按照本发明的方案   DEFLATE
  压缩节省的部分   40%~60%   60~80%
  压缩所需存储器   0.1KB~0.2KB   5KB
  压缩所需时间(以相对于DEFLATE的比例)   0.2~0.3   1
应当理解,以上描述为本发明的解释说明并不构成本发明的限制。在不脱离由所附权利要求书限定的本发明的宗旨和范围的情况下,本领域技术人员可以进行各种修改和应用。

Claims (30)

1.一种压缩结构化文档的方法,该方法包括:
一个对该结构化文档搜索一次以寻找第一和第二标志的搜索步骤,每个第一标志表示该结构化文档的对应元素的开始,并且每个第二标志表示该结构化文档的该对应元素的结束;
当在该搜索步骤中遇到该第一标志的一个时,输出该第一标志的一个的代表并递增等级计数器的值,其中该等级计数器的值表示该元素位于该结构化文档中的哪个等级;以及
当在该搜索步骤中遇到该第二标志的一个时,输出一个代码数据并递减该等级计数器的值。
2.根据权利要求1所述的方法,其中当第一次遇到该第一标志的一个时,该第一标志的一个的代表像它一样是该第一标志的一个。
3.根据权利要求1所述的方法,其中当第二次或更多次遇到该第一标志的一个时,该第一标志的一个的代表是对作为当第一次遇到该第一标志的一个时输出的、该第一标志的一个的代表的参考。
4.根据权利要求1的方法,其中第一次遇到的该第一标志的一个的代表形成一个字典,其中该字典为该结构化文档的每个等级单独地形成。
5.根据权利要求4所述的方法,还包括:
基于该第一标志的一个的等级和在该等级内该第一标志的一个的顺序,使用字典确定该第一标志的一个是否是第一次遇到。
6.根据权利要求1所述的方法,其中该第二次或更多次遇到的该第一标志的一个的代表是第一代码数据,并且当在该搜索步骤中遇到该第二代码的一个时,代码数据输出是一个第二代码数据。
7.根据权利要求6所述的方法,其中该第一代码数据包括一个索引,并且该索引的值表示该结构化文档的等级内该第一标志的一个的顺序。
8.根据权利要求1所述的方法,其中该搜索步骤还包括:
搜索该结构化文档中的元素;当第一次遇到该元素的一个的内容时,像它原来一样地输出该元素的一个的内容;以及
当第二次或更多次遇到该元素的一个的内容时,输出对该元素的一个的内容的参考,该参考在第一次遇到该元素的一个的该内容时输出,以为该结构化文档的每个等级单独地形成一个字典。
9.根据权利要求1所述的方法,其中该元素包括字符数据、注释或处理指令的类型。
10.根据权利要求9所述的方法,其中分别为每种类型的元素提供第一和第二代码数据。
11.根据权利要求1所述的方法,其中该搜索步骤还包括:
在该结构化文档中搜索特定标志;以及
当在该搜索步骤中遇到该特定标志的一个时,输出一个特定代码数据。
12.一种解压缩包括第一标志的代表的、压缩的结构化文档的方法,其中该代表包括该第一标志和第一代码数据、以及表示第二标志的第二代码数据,并且每个第一标志表示该压缩的结构化文档的对应元素的开始,并且每个第二标志表示该压缩的结构化文档的该对应元素的结束,该方法包括:
一个对该结构化文档搜索一次以寻找该第一标志和该第二代码数据的代表的搜索步骤;
当在该搜索步骤中遇到每个该第一标志时,输出每个该第一标志,将每个该第一标志添加到字典中,并递增等级计数器的值,其中该等级计数器的值表示该对应元素位于该压缩的结构化文档中的哪个等级,从而为该压缩的结构化文档的每个等级单独地形成该字典;
当在该搜索步骤中遇到该第一代码数据时,从对应等级的该字典输出一个对应的第一标志并递增该等级计数器的值;以及
当在该搜索步骤中遇到该第二代码数据时,重建一个对应的第二标志,输出该对应的第二标志并递减该等级计数器的值。
13.根据权利要求12所述的方法,其中使用包含在该第一代码数据的一个索引的值,在该字典中搜索该对应的第一标志,该索引的值表示在该结构化文档的每个等级内的该第一标志的顺序。
14.根据权利要求12所述的方法,其中该搜索步骤还包括:
在压缩的该结构化文档中搜索元素和对该元素的参考;
当遇到该元素的一个的对应内容时,像它原来一样地输出该元素的一个的该对应内容并将该元素的一个的对应内容添加到该字典;以及
当遇到对该元素的一个的参考时,从该字典中输出该元素的一个的该对应内容。
15.一种用于压缩结构化文档的装置,该装置包括:
搜索装置,用于对该结构化文档搜索一次以寻找第一和第二标志,每个第一标志表示该结构化文档的对应元素的开始,并且每个第二标志表示该结构化文档的该对应元素的结束;
输出装置,用于当该搜索装置遇到该第一标志的一个时,输出该第一标志的一个的代表,并用于当该搜索装置遇到该第二标志的一个时,输出代码数据;以及
计数装置,用于当该搜索装置遇到该第一标志的一个时,递增等级计数器的值,其中该等级计数器的值表示该元素位于该结构化文档中的哪个等级和用于当该搜索装置遇到该第二标志的一个时,递减该等级计数器的值。
16.根据权利要求15所述的装置,其中当该搜索装置第一次遇到该第一标志的一个时,该输出装置配置为像它原来一样地输出该第一标志的一个。
17.根据权利要求16所述的装置,其中
第一次遇到的该第一标志的一个的代表形成一个字典,其中为该结构化文档的每个等级单独地形成该字典,以及
当该搜索装置遇到该第一标志的一个时,使用该字典,该输出装置配置为基于该第一标志的一个的等级和该等级内该第一标志的一个的顺序确定是否是第一次遇到该第一标志的一个。
18.根据权利要求15所述的装置,其中当该搜索装置第二次和更多次遇到该第一标志的一个时,该输出装置配置为输出对作为当第一次遇到该第一标志的一个时输出的、该第一标志的一个的代表的参考。
19.根据权利要求15所述的装置,其中
该输出装置配置为输出作为第二次或更多次遇到的该第一标志的一个的代表的第一代码数据并将一个索引添加到该第一代码数据,并且该索引的值表示该结构化文档的等级内该第一标志的一个的顺序,以及
当遇到该第二标志的一个时,由该输出装置输出的该代码数据是第二代码数据。
20.根据权利要求15所述的装置,其中
该搜索装置配置为在该结构化文档中搜索该元素,并且
当该搜索装置第一次遇到该元素的一个的内容时,该输出装置配置为像它原来一样输出该元素的一个的内容,以及
当该搜索装置第二次或更多次遇到该元素的一个的内容时,该输出装置配置为输出对该元素的一个的内容的参考,该参考在第一次遇到该元素的内容时输出,以为该结构化文档的每个等级单独地形成一个字典。
21.根据权利要求15所述的装置,该搜索装置配置为在该结构化文档中搜索特定标志,其中
当该搜索装置遇到该特定标志的一个时,该输出装置配置为输出一个特定代码数据。
22.一种用于解压缩包括第一标志的代表的、压缩的结构化文档的装置,其中该代表包括该第一标志和第一代码数据、以及表示第二标志的第二代码数据,并且每个第一标志表示该压缩的结构化文档的对应元素的开始,并且每个第二标志表示该压缩的结构化文档的该对应元素的结束,该装置包括:
搜索装置,用于对该结构化文档搜索一次以寻找该第一标志和该第二代码数据的代表;
计数装置,用于当该搜索装置遇到每个该第一标志时,递增等级计数器的值,当该搜索装置遇到该第一代码数据时,递增该等级计数器的值,并且当该搜索装置遇到该第二代码数据时,递减该等级计数器的值,其中该等级计数器的值表示该对应元素位于该压缩的结构化文档中的哪个等级;
求和装置,用于当该搜索装置遇到每个该第一标志时,将每个该第一标志添加到字典中,从而为该压缩的结构化文档的每个等级单独地形成字典;
重建装置,用于当该搜索装置遇到该第二代码数据时,重建一个对应的第二标志;以及
输出装置,用于当该搜索装置遇到每个该第一标志时,输出每个该第一标志,当该搜索装置遇到该第一代码数据时,从该对应等级的字典输出一个对应的第一标志,并且当该搜索装置遇到该第二代码数据时,输出由该重建装置重建的该对应的第二标志。
23.根据权利要求22所述的装置,其中该输出装置配置为用包含在该第一代码数据的一个索引值,在该字典中搜索该对应的第一标志,该索引的值表示该结构化文档的每个等级内该第一标志的顺序。
24.根据权利要求22所述的装置,其中
该搜索装置配置为在该压缩的结构化文档中搜索元素和对该元素的参考,
当该搜索装置遇到该元素的一个的对应内容时,该输出装置配置为像它原来一样地输出该元素的一个的该对应内容,并且该求和装置配置为将该元素的一个的该对应内容添加到该字典中,以及
当该搜索装置遇到该元素的一个的参考时,该输出装置配置为从该字典输出该元素的一个的该对应内容。
25.一种包括处理器可执行指令的计算机程序,用于执行压缩结构化文档的方法,该方法包括:
一个对该结构化文档搜索一次以寻找第一和第二标志的搜索步骤,每个第一标志表示该结构化文档的对应元素的开始,并且每个第二标志表示该结构化文档的该对应元素的结束;
当在该搜索步骤中遇到该第一标志的一个时,输出该第一标志的一个的代表并递增等级计数器的值,其中该等级计数器的值表示该元素位于该结构化文档中的哪个等级;以及
当在该搜索步骤中遇到该第二标志的一个时,输出一个代码数据并递减该等级计数器的值。
26.一种包括处理器可执行指令的计算机程序,用于解压缩包括第一标志的代表的、压缩的结构化文档的方法,其中该代表包括该第一标志和第一代码数据、以及表示第二标志的第二代码数据,并且每个第一标志表示该压缩的结构化文档的对应元素的开始,并且每个第二标志表示该压缩的结构化文档的该对应元素的结束,该方法包括:
一个对该结构化文档搜索一次以寻找该第一标志和该第二代码数据的代表的搜索步骤;
当在该搜索步骤中遇到每个该第一标志时,输出每个该第一标志,将每个该第一标志添加到字典中,并递增等级计数器的值,其中该等级计数器的值表示该对应元素位于该压缩的结构化文档中的哪个等级,从而为该压缩的结构化文档的每个等级单独地形成该字典;
当在该搜索步骤中遇到该第一代码数据时,从对应等级的该字典输出一个对应的第一标志并递增该等级计数器的值;以及
当在该搜索步骤中遇到该第二代码数据时,重建一个对应的第二标志,输出该对应的第二标志并递减该等级计数器的值。
27.一种存储包括处理器可执行指令的计算机程序的计算机软件介质,该计算机程序用于执行压缩结构化文档的方法,该方法包括:
一个对该结构化文档搜索一次以寻找第一和第二标志的搜索步骤,每个第一标志表示该结构化文档的对应元素的开始,并且每个第二标志表示该结构化文档的该对应元素的结束;
当在该搜索步骤中遇到该第一标志的一个时,输出该第一标志的一个的代表并递增等级计数器的值,其中该等级计数器的值表示该元素位于该结构化文档中的哪个等级;以及
当在该搜索步骤中遇到该第二标志的一个时,输出一个第二代码数据并递减该等级计数器的值。
28.一种存储包括处理器可执行指令的计算机程序的计算机软件介质,该计算机程序用于执行解压缩包括第一标志的代表的、压缩的结构化文档的方法,其中该代表包括该第一标志和第一代码数据、以及表示第二标志的第二代码数据,并且每个第一标志表示该压缩的结构化文档的对应元素的开始,并且每个第二标志表示该压缩的结构化文档的该对应元素的结束,该方法包括:
一个对该结构化文档搜索一次以寻找该第一标志和该第二代码数据的代表的搜索步骤;
当在该搜索步骤中遇到每个该第一标志时,输出每个该第一标志,将每个该第一标志添加到字典中,并递增等级计数器的值,其中该等级计数器的值表示该对应元素位于该压缩的结构化文档中的哪个等级,从而为该压缩的结构化文档的每个等级单独地形成该字典;
当在该搜索步骤中遇到该第一代码数据时,从对应等级的该字典输出一个对应的第一标志并递增该等级计数器的值;
当在该搜索步骤中遇到该第二代码数据时,重建一个对应的第二标志,输出该对应的第二标志并递减该等级计数器的值。
29.一种载有处理器可执行指令的信号,用于控制计算机执行压缩结构化文档的方法,该方法包括:
一个对该结构化文档搜索一次以寻找第一和第二标志的搜索步骤,每个第一标志表示该结构化文档的对应元素的开始,并且每个第二标志表示该结构化文档的该对应元素的结束;
当在该搜索步骤中遇到该第一标志的一个时,输出该第一标志的一个的代表并递增等级计数器的值,其中该等级计数器的值表示该元素位于该结构化文档中的哪个等级;以及
当在该搜索步骤中遇到该第二标志的一个时,输出一个第二代码数据并递减该等级计数器的值。
30.一种载有处理器可执行指令的信号,它用于控制计算机执行解压缩包括第一标志的代表的、压缩的结构化文档的方法,其中该代表包括该第一标志和第一代码数据、以及表示第二标志的第二代码数据,并且每个第一标志表示该压缩的结构化文档的对应元素的开始,并且每个第二标志表示该压缩的结构化文档的该对应元素的结束,该方法包括:
一个对该结构化文档搜索一次以寻找该第一标志和该第二代码数据的代表的搜索步骤;
当在该搜索步骤中遇到每个该第一标志时,输出每个该第一标志,将每个该第一标志添加到字典中,并递增等级计数器的值,其中该等级计数器的值表示该对应元素位于该压缩的结构化文档中的哪个等级,从而为该压缩的结构化文档的每个等级单独地形成该字典;
当在该搜索步骤中遇到该第一代码数据时,从对应等级的该字典输出一个对应的第一标志并递增该等级计数器的值;
当在该搜索步骤中遇到该第二代码数据时,重建一个对应的第二标志,输出对应的第二标志并递减该等级计数器的值。
CN2005800351863A 2004-10-18 2005-10-14 压缩结构化文档的方法和装置 Expired - Fee Related CN101040444B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US61899504P 2004-10-18 2004-10-18
US60/618,995 2004-10-18
US10/994,654 US20060085737A1 (en) 2004-10-18 2004-11-23 Adaptive compression scheme
US10/994,654 2004-11-23
PCT/IB2005/003068 WO2006043142A1 (en) 2004-10-18 2005-10-14 Adaptive compression scheme

Publications (2)

Publication Number Publication Date
CN101040444A true CN101040444A (zh) 2007-09-19
CN101040444B CN101040444B (zh) 2010-05-12

Family

ID=35839029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800351863A Expired - Fee Related CN101040444B (zh) 2004-10-18 2005-10-14 压缩结构化文档的方法和装置

Country Status (4)

Country Link
US (1) US20060085737A1 (zh)
EP (1) EP1803225A1 (zh)
CN (1) CN101040444B (zh)
WO (1) WO2006043142A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818121A (zh) * 2016-09-14 2018-03-20 阿里巴巴集团控股有限公司 一种html文件压缩方法、装置及电子设备

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415665B2 (en) * 2003-01-15 2008-08-19 At&T Delaware Intellectual Property, Inc. Methods and systems for compressing markup language files
US8346737B2 (en) * 2005-03-21 2013-01-01 Oracle International Corporation Encoding of hierarchically organized data for efficient storage and processing
US8131728B2 (en) 2006-06-23 2012-03-06 International Business Machines Corporation Processing large sized relationship-specifying markup language documents
US7627566B2 (en) * 2006-10-20 2009-12-01 Oracle International Corporation Encoding insignificant whitespace of XML data
US7836396B2 (en) * 2007-01-05 2010-11-16 International Business Machines Corporation Automatically collecting and compressing style attributes within a web document
US8391148B1 (en) * 2007-07-30 2013-03-05 Rockstar Consortion USLP Method and apparatus for Ethernet data compression
US8090731B2 (en) 2007-10-29 2012-01-03 Oracle International Corporation Document fidelity with binary XML storage
US8250062B2 (en) * 2007-11-09 2012-08-21 Oracle International Corporation Optimized streaming evaluation of XML queries
FR2929778B1 (fr) * 2008-04-07 2012-05-04 Canon Kk Procedes et dispositifs de codage et de decodage binaire iteratif pour documents de type xml.
FR2936623B1 (fr) * 2008-09-30 2011-03-04 Canon Kk Procede de codage d'un document structure et de decodage, dispositifs correspondants
US20100146410A1 (en) * 2008-12-10 2010-06-10 Barrett Kreiner Markup language stream compression using a data stack
JP5671320B2 (ja) * 2009-12-18 2015-02-18 キヤノン株式会社 情報処理装置及びその制御方法並びにプログラム
EP2559036A1 (en) * 2010-04-15 2013-02-20 Ramot at Tel-Aviv University Ltd. Multiple programming of flash memory without erase
US8149148B1 (en) 2010-10-08 2012-04-03 Microsoft Corporation Local binary XML string compression
JP6550765B2 (ja) * 2015-01-28 2019-07-31 富士通株式会社 文字データ変換プログラム、文字データ変換装置および文字データ変換方法
JP2017126185A (ja) * 2016-01-13 2017-07-20 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6950162B2 (ja) * 2016-10-06 2021-10-13 富士通株式会社 暗号化システム、暗号化方法、暗号化装置および暗号化プログラム
JP7210130B2 (ja) * 2017-04-07 2023-01-23 富士通株式会社 符号化プログラム、符号化方法および符号化装置
CN107622045B (zh) * 2017-08-09 2021-02-23 联动优势科技有限公司 一种信息处理方法及设备
US20230269075A1 (en) * 2022-02-23 2023-08-24 Mellanox Technologies, Ltd. Devices, systems, and methods for integrating encryption service channels with a data path

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US65822A (en) * 1867-06-18 Improvement in melodeons
US5129052A (en) * 1989-08-18 1992-07-07 International Business Machines Corporation Dynamic selection of recursively nested logical element data formats
AUPR063400A0 (en) * 2000-10-06 2000-11-02 Canon Kabushiki Kaisha Xml encoding scheme
JP3832807B2 (ja) * 2001-06-28 2006-10-11 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理方法及びその手法を用いたエンコーダ、デコーダ並びにxmlパーサ
EP1435738A1 (en) * 2002-12-05 2004-07-07 Samsung Electronics Co., Ltd. Method and system for generating input file using meta language regarding graphic data compression
CN1492322A (zh) * 2003-08-20 2004-04-28 放 黄 xml数据压缩和解压方法
JP4261299B2 (ja) * 2003-09-19 2009-04-30 株式会社エヌ・ティ・ティ・ドコモ データ圧縮装置、データ復元装置およびデータ管理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818121A (zh) * 2016-09-14 2018-03-20 阿里巴巴集团控股有限公司 一种html文件压缩方法、装置及电子设备
CN107818121B (zh) * 2016-09-14 2022-05-10 阿里巴巴集团控股有限公司 一种html文件压缩方法、装置及电子设备

Also Published As

Publication number Publication date
WO2006043142A1 (en) 2006-04-27
CN101040444B (zh) 2010-05-12
US20060085737A1 (en) 2006-04-20
EP1803225A1 (en) 2007-07-04

Similar Documents

Publication Publication Date Title
CN101040444A (zh) 自适应压缩方案
US9363309B2 (en) Systems and methods for compressing packet data by predicting subsequent data
US9559720B2 (en) Compression analyzer
US7492290B1 (en) Alternative encoding for LZSS output
CN1104094C (zh) 数据压缩方法和设备
US7102552B1 (en) Data compression with edit-in-place capability for compressed data
CN101350624B (zh) 一种支持ansi编码的中文文本的压缩方法
US20020029206A1 (en) Data compressing apparatus and a data decompressing apparatus, a data compressing method and a data decompressing method,and a data compressing or decompressing dictionary creating apparatus and a computer readable recording medium storing a data compressing
CN1228887A (zh) 与串搜索交错进行即时字典更新的数据压缩和解压缩系统
JP2003218703A (ja) データ符号化装置及びデータ復号装置
Claude et al. Universal indexes for highly repetitive document collections
CN1826586A (zh) 软件原子化
US6225922B1 (en) System and method for compressing data using adaptive field encoding
US20130054543A1 (en) Inverted Order Encoding in Lossless Compresssion
US8650217B2 (en) Compression method for a data transfer that is independent of computer architecture and/or decompression method for a data record
CN101075237A (zh) 一种数据存储方法、数据读取方法以及数据检索方法
CN1598811A (zh) 数据压缩器、数据解压缩器以及数据管理系统
US20090055395A1 (en) Method and Apparatus for XML Data Processing
Adiego et al. Lempel-Ziv compression of structured text
Skibiński et al. Effective asymmetric XML compression
Cannane et al. General‐purpose compression for efficient retrieval
Cannane et al. A general-purpose compression scheme for large collections
Vey Differential direct coding: a compression algorithm for nucleotide sequence data
Moffat et al. Binary codes for non-uniform sources
Chen et al. CMIC: an efficient quality score compressor with random access functionality

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NOKIA SIEMENS NETWORKS

Free format text: FORMER OWNER: NOKIA NETWORKS OY

Effective date: 20080328

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20080328

Address after: Espoo, Finland

Applicant after: Nokia Corp.

Address before: Espoo, Finland

Applicant before: Nokia Oyj

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100512

Termination date: 20131014