CN1802642A - 通过利用较短字代替长字来压缩标记语言文件的方法 - Google Patents
通过利用较短字代替长字来压缩标记语言文件的方法 Download PDFInfo
- Publication number
- CN1802642A CN1802642A CNA038267608A CN03826760A CN1802642A CN 1802642 A CN1802642 A CN 1802642A CN A038267608 A CNA038267608 A CN A038267608A CN 03826760 A CN03826760 A CN 03826760A CN 1802642 A CN1802642 A CN 1802642A
- Authority
- CN
- China
- Prior art keywords
- code
- data
- value
- compression
- data set
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种压缩数据的方法,尤其是一种用于压缩数据集的方法,该数据集具有标记层次并包括具有第一值的数据部分,所述数据集是根据定义部分进行配置的,该方法包括以下步骤:至少为所述标记层次分配具有比所述第一值更少值的代码,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分并且产生压缩的数据集。在优选实施例中本发明尤其涉及标记语言,如XML、SGML之类。
Description
技术领域
本发明一般涉及信息的压缩,更具体而言,涉及标记语言文档的压缩。
背景技术
在电信或数据通信领域以及类似或相关领域中,在各种环境之间交换信息是必要的,例如在不同的数据程序、不同的数据库以及不同的软件和硬件平台之间等。
所有信息交换的先决条件是,接收器和发送器以相同的方式解释和理解所交换的信息。例如,这可以通过开发定义了要交换的信息的结构的特殊数据形式来实现,其中发送器和接收器都使用相同的数据形式。
这种数据形式通常都与特定环境紧密联系,例如被结合在特定应用程序的可执行计算机代码之中。这有利于实现小的且带宽有效的信息包(packet)(数据包)的交换。另一方面,与特定环境紧密联系的数据形式变得相当静态,并且实际上不可能使用现有的数据形式来交换除了本信息之外具有另一结构的信息。因此,对信息结构的任何修改都将需要数据形式的适应。
因此,在特定环境和所使用的数据形式之间的紧密联系意味着,在信息结构改变的时候,例如造成重新设计特定应用程序的可执行计算机代码的时候,该环境必须被重新设计。这使得在动态环境中维持系统变得困难而昂贵。
另外,为特定环境设计的数据形式通常不能支持与其它环境(例如其它应用程序或其它平台)的信息交换。于是公知的解决方案是开发用于重新配置特定的信息结构以适应其它环境的不同分析器(parser)。例如,可以解析从特定应用程序或特定平台传送的信息以适应另一接收应用程序或平台。然而,类似于对内部使用的数据形式的改变的适应,分析器方法的缺点在于,必须重新设计分析器以改变信息结构,例如重新设计特定分析器的计算机代码,这再次使得在动态环境中维持系统变得困难而昂贵。
另一个更动态的解决方案是使用两部分(two-part)的数据形式。这里,交换的信息的结构被定义在第一部分中,它可以是任何包括数据的配置,例如数据库或者甚至包括简单文本文档的数据文件等。这明显不同于被结合到应用程序或分析器程序或类似程序中的信息结构。而且,在两部分的解决方案中的第二部分包括将要交换的信息,该信息是根据在第一部分中定义的结构进行配置的。
第一部分和第二部分可以被配置为一个单元(例如在一个数据文件中),或者被配置为两个独立的单元(例如作为两个独立的数据文件)。然而,两个独立的单元通常预先假设第一单元与第二单元一起被交换,或者否则第一单元对于接收器是已知的,例如被预先存储在接收环境中,或者否则对于接收环境是可访问的。
如上面简述的两部分的解决方案使得分析器通过考虑第一部分所定义的信息结构而能够使其操作适应于第二部分所包括的交换的信息的结构。信息结构的定义使得一般分析器能够重新配置交换的信息以适应所讨论的接收环境。因此,两部分的解决方案或者类似的解决方案使得能够使用一个单独的分析器,以用于通过考虑相关的信息结构定义来处理大量的信息结构。
这明显不同于其中交换信息的结构由分析器程序本身来反映的解决方案,因为如果信息结构发生改变,那么分析器必须被重新编程。作为对分析器困难且昂贵的重新编程的替换,两部分的解决方案提供了仅仅重写第一部分所包括的信息结构的定义的可能性。这就能够如同编辑定义了本信息结构的现有文本文档一样地容易。
而且,信息结构的原始定义通常被定义在所讨论的系统或环境的规范中。换句话说,规定信息结构的文本文档通常可从系统或环境的设计阶段获得。该文本可以由简单方式编辑以形成在两部分的解决方案中的第一定义部分,例如结合如下所述的标记语言。
现有技术中已知各种两部分的数据形式,其中第一部分定义信息结构,以及第二部分包括根据定义的信息结构而配置的信息。特别是,已经使用两部分的数据形式开发了各种所谓的标记语言。
标记语言指的是一组标记约定(convention),其用于编码文本,即编码包括要在不同环境之间进行交换的信息的文本文档。标记语言可以特别地规定什么标记是允许的,什么标记是需要的,标记如何区别于文本,以及标记表示什么。
SGML(标准通用标记语言)是用于描述所标记的电子文本的标记语言的一个例子。类似标记语言的另一个例子是由万维网联盟(参见W3C网页:http://www.w3.org/XML)开发的XML(可扩展标记语言)。这种标记语言是元语言,即一种形式上描述语言(在这种情况下是标记语言)的方式。SGML和XML都广泛用于定义电子存储和处理文本所包括的信息的设备独立、系统独立的方法。
诸如SGML、XML之类的标记语言都是可扩展的,即它们不包含固定的预定标签(tag)组或者类似的定义方式。而且,依照标记语言的文档必须是很好地依照语法而形成的,其优选是由用户定义的,其中特定文档可以在形式上被证实符合该语法。典型的标记语言共同具有三个重点:第一,它们使用描述性的而不是过程性的标记;第二,它们使用文档类型的概念;以及第三,它们实质上独立于任何一个硬件或软件系统。以下简要讨论这三个方面。
关于描述性标记而不是过程性标记的第一个重点意味着标记所做的只不过是分类或定义文档的多个部分。诸如<para>之类的标记代码只标识文档的一部分,并声明“下面的项是一段”等。相反,过程性标记定义了在文档中的特定点要执行什么处理,例如“调用过程PARA”或者“移动左边缘留下两个空格(quad)”等。通常,处理标记文档(例如格式化文档)所需的指令明显区别于文档中的描述性标记。过程指令和类似指令通常都集中在文档之外的独立过程或程序之中,例如以称为样式表的独特文档来表示。通过使用描述性标记而不是过程性标记,相同的文档可以以许多不同的方式进行处理,只使用被认为是相关的那些部分。例如,一个程序可以从标记文档中提取人和地点的名称以产生索引或数据库,而对相同文档操作的另一个程序可以以两种不同的字体打印人和地点的名称。
关于使用文档类型概念的第二个重点意味着标记文档被认为具有类型,正如计算机所处理的其它对象一样。如果文档属于已知的类型,那么这使具有明确的文档类型定义的计算机程序能够检查声称属于那种类型的任何文档事实上是否符合规范。特别地,相同类型的不同文档能够以统一的方式进行处理。而且,可以写诸如样式表以及尤其是分析器之类的程序或者类似程序以利用这种文档所包括的信息结构中所封装的知识,其例如使分析器能够以更加智能的方式运行。
关于硬件和软件独立性的第三个重点意味着,标记语言的基本设计目标是保证依照标记语言的规定所编码的文档能够从一个硬件和软件环境移动到另一个环境而不损失信息。使硬件和软件能够独立的一个步骤是让特定标记语言的所有文档都使用相同的基础字符编码。例如,以XML编码的字符是由国际标准定义的,(ISO/IEC 10646信息技术一通用多八位编码字符集(UCS)),它是由称为UnicodeConsortium的工业群体所主张的通用字符集实现的,并且被称为Unicode。这提供了一种标准化的方式来表示构成世界书写系统的数千个离散符号中的任何一个。另一种可能但更有限的字符编码可能是ASCII(美国信息交换标准代码)的ISO/IEC 646版本。
用于标记或识别文本结构的简单而一致的机制是例如由上述XML提供的。XML的两部分特性是由XML文档和定义在XML文档中的信息结构的XML文档类型定义(DTD)反映的。正如将要解释的,文档类型定义(DTD)可以被嵌入在XML文档中(内部DTD),或者为独立的文本文件或类似的文件所包括(外部DTD)。应该注意,还存在定义XML文档的结构的其它方式,例如通过使用所谓的XML模式(XML-schema)。
而且,DTD或XML模式能够用于检查标记文档的语法,这意味着由相同密钥所检查和批准的所有标记文档具有相同的信息结构,尽管它们可以具有不同的信息内容。
XML文档包括两种成分,即标记和字符数据。标记构成文档的框架并指示目标应用程序或者类似程序可以如何解释和处理内容。基本的XML标记是元素属性、引用(reference)以及过程指令,尽管还存在其它XML标记。而且,其它标记语言也可以具有其它标记。XML文档中不是标记的信息被看作字符数据。
XML标记意味着所称的标签包围在文档中可识别的部分。标签使文档分成称为元素的有名单元的逻辑结构。开始标签和结束标签以及由它们包围的数据包括一个元素。例如,简单的元素可以是<name>Smith</name>,其中<name>和</name>分别构成开始标签和结束标签,其中在这个简单的例子中,“Smith”构成该元素的字符数据内容。元素也可以是空的,例如<name></name>或者可替换地<name/>。
XML元素往往包含另外的嵌入元素。嵌入元素必须由别的元素完全包围,并且整个文档必须由一个单独的文档元素即根元素包围。
具有根元素“start”的文档结构的简单例子如下,其中“start”包围(endorse)元素“person”,元素“person”又包围元素“name”和“phone”:<start><person>
<name>Smith</name>
<phone>+46 31 7470000</phone></person></start>
文档元素结构层次(hierarchy)可以被形象化为盒子中的盒子(或者俄罗斯娃娃(Russian doll)),或者被形象化为树的分枝,其中对不同类型的元素给予不同的名称。然而,除了特定类型的元素与其它元素类型的关系以外,XML不提供任何方式来表示该特定类型元素的含义。相反,由XML词汇的创建者来决定为它们标识的元素选择可理解的名称并用文本标记来定义它们的适当使用。
XML也提供要嵌入到元素的开始标签中的一个或若干属性。这种属性提供有关元素的附加信息,其中属性名的后面是等号,并且属性值又由引号所包围。
示例的元素属性是:<name keyaccount=“yes”>Smith</name>,其中属性“keyaccount”已经被分配了值“yes”。
目标应用程序可以以其选择的任何方式使用属性值。例如,格式器可以以不同于打印具有设置为“no”的“keycustomer”属性的“name”元素的方式来打印具有设置为“yes”的该属性的“name”元素。另一个目标应用程序可以使用相同的属性来确定“name”元素究竟是否要被处理。
另外,XML提供了将对实体的引用插入在标记文档中的可能性。实体可以以其最简单的形式包括从一个字符到整个文档的字符数据的任何东西,它将代替该引用。引用很象字处理器搜索和替换功能那样起作用,即一个字或短语(实体引用)被定位,并由另一个字或短语(实体)来替换。
实体引用的示例是:
<letter>&letterhead</letter>
该引用使得有可能利用由实体包括的内容来代替实体引用“&letterhead”,例如在每个字母的开始处插入letterhead信息。
例如,如果实体“letterhead”已经被声明包括多个单词“ACMEConstruction INC”,那么在标记文档中引用“&letterhead”的每个实例将由多个单词“ACME Construction INC”来代替。
虽然使用XML的目的之一在于从文档本身删除处理文档所特定的任何信息,但是在文档中包括这种信息仍然会是便利的——只要如此,则其能够明显区别于文档的结构。例如,断页(page-breaking)决策通常最好由目标应用程序格式引擎或者类似引擎来执行,但总是存在会有必要不考虑这些的机会。插入到文档中的XML处理指令是一种实现这一点而不干扰标记的其它方面的有效方式。
XML处理指令以<?开始并以?>结束,并且示例的处理指令可以是:<?tex newpage?>。按照惯例,第一部分是某一处理器的名称(在上面例子中的tex),以及第二部分是预定供该处理器使用的一些数据(在这种情况下是开始新页的指令)。
XML处理指令的另一个例子是XML-声明(declaration)<?xml?>,这是最常用的过程指令。也称为序言(prologue)的该XML-声明出现在XML文档的开始处以告知有关该文档的一些重要信息。XML-声明可以包含三段信息:使用的XML的版本;使用的字符集;以及促使对文档进行解释的文档类型定义是被嵌入在文档本身中还是被单独的实体所包括(例如被单独文件所包括)。
XML-声明的示例是:
<?xml version=“1.0”encoding=“utf-8”standalone=“yes”?>。
根据该XML-声明,所讨论的文档使用XML版本1.0和八位Unicode编码(encoding=“utf-8”)。而且,它宣布文档包括所有必要的文档类型定义(standalone=“yes”),即文档不使用任何外部文档类型定义文件或者类似文件。然而,外部文档类型定义文件或者类似文件优选地与信息交换有关,然而并不是先决条件。下面将更为详尽地讨论文档类型定义(DTD)。然而应该注意,还存在定义XML文档的结构的其它方式,例如通过使用所谓的XML模式。
声明和文档类型定义(DTD)
在以上对XML文档的概述中提到了处理指令,它被预定用于目标应用程序。预定用于XML处理器的另一个这种重要的指令是文档类型声明,其由关键字“DOCTYPE”来表示。如果使用文档类型声明,则它必须出现在根元素之前,即在文档开始标签之前。一个简单的文档类型声明是<!DOCTYPE mydocument>,它只标识了根元素的名称(mydocument)。使用更为复杂的变形来保持文档类型定义(DTD)。当使用这种DTD时,要用方括号将其包围起来,例如:
<!DOCTYPE mydocument[!ELEMENT name(#PCDATA)]>
这里,文档“mydocument”已被定义为具有一个单独的元素,即元素“name”,其又被定义为具有“Parsable Character Data”。例如,“Parsable Character Data”可以是名称“Smith”或者一些其它字符数据。此外,在这个例子中,DTD被结合在文档“mydocument”中,即文档使用内部DTD。这对应于XML声明处理指令中的standalone=“yes”,即如上所述的序言。然而,外部DTD可以通过使用后面是相关文档的根元素名称的关键字“DOCTYPE”以及例如后面是外部文件或者类似文件的名称的关键字“PUBLIC”来声明。
说明外部DTD的声明的示例可以是:
<!DOCTYPE start PUBLIC“http://www.internet.com/xml/definitions/start.dtd”>
这里,“start”是相关文档的根元素,并且外部DTD位于在网址“http://www.internet.com/xml/definitions”处的名为“start.dtd”的文件中。关键字“PUBLIC”表示其它应用程序可以访问该DTD文件,如果若干应用程序交换包括不同信息的XML文档,则关键字“PUBLIC”会是优选的,但根据在DTD中定义的结构来配置。
考虑以上对XML文档的概述,其中讨论了元素、属性、开始标签、结束标签、处理指令和引用,以及到目前为止有关声明的讨论,短的示例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中,实体“letterhead”已经被分配了字符数据“ACMEConstruction INC”,其将代替在XML文档中每次出现的实体引用“&letterhead”。根元素“start”已经被定义为包括元素“person”,其中“person”已经被定义为包括元素“letter”、“lastname”、“firstname”、“age”和“phone”,以及这些元素又被定义为包括可解析的数据(#PCDATA)。另外,元素“person”已经被定义为包括属性“keyaccount”。该属性又已经由关键字“#IMPLIED”定义,所述关键字表示不需要向属性“keyaccount”提供值,而限定符(qualifier)“yes”和“no”表示如果向“keayaccount”提供了值,则它一定是“yes”或“no”而不是别的。
XML提供了对元素和属性的几个其它限制。例如,元素可以由定义了元素具体值(occurrence)的可选限定符“?”、“*”或“+”进一步在DTD中定义。例如,属性可以由可替换的限定符定义,所述限定符是CDATA、ID、IDREF、IDREFS、NMTOKEN或NMTOKENS,其定义了属性可以采用的值的类型;以及是#FIXED、#REQUIRED或#IMPLIED,其定义了属性值的具体值。所有这些限定符都被全部定义在XML规范之中,并且在这一点将不进一步对它们进行解释。
而且,应该强调的是,XML只是几种标记语言中的一种,并且文档类型定义(DTD)或XML模式只是在标记文档或者类似文档中定义信息结构的几种可能的方式中的示例。例如,正如先前所述的,SGML是另一种合适的标记语言,而例如XHTML是类似XML的HTML发展版本。还存在其他的XML版本或者XML的扩展,例如适于表示数学或化学表达式等。
结论
可以看出,以上的示例XML文档只包括在下面位置中的字符数据:
″letter″ =″ACME Construction INC″
″person″ =″yes″
″lastname″ =″Smith″
″firstname″=″John″
″age″ =″45″
″phone″ =″+46 31 7470000″
字符数据中的信息另外可以表示为:
″ACME Construction INCyesSmithJohn4546 31 7470000″,
其合计达48个字符,包括空格在内。
然而,上述例子中的整个XML文档包括多于300个字符,XML-声明和DOCTYP-声明包括在内。此外,即使忽略XML-声明和DOCTYP-声明,示例XML文档仍包括多于180个字符。显然,XML文档包括许多开销(overhead)字符。而且,随着XML文档包括更多元素,即在上述示例中更多的“person”元素,开销增加。实质上是所有标记文本的总和(例如元素和属性等的名称)引起了开销。对于所有标记语言来说这是相同的,这使它们不适于在低带宽环境中进行信息交换。因此,标记文档不适于在低带宽环境中进行信息交换。
然而,标记语言通常提供如上所述的两部分的解决方案。两部分的解决方案通过考虑第一部分所定义的信息结构来使分析器能够将其操作适应于第二部分所包括的交换信息。因此,分析器能够保持不变,即使交换信息的结构发生变化。这是有利的,因为它避免了困难且昂贵地重新编程分析器来适应不同的信息结构。
因此,需要有所改善以允许使用标记语言或者类似的两部分的解决方案来在低带宽环境中交换信息。
专利US 6,510,434 B1示出一种使用XML标签和元文件的索引从数据库检索信息的系统和方法。
因此,与本发明相对比,该文献没有涉及信息压缩,而无论信息是为文本文件、数据库还是为某一其它存储装置所包括。
专利US 6,253,624 B1示出一种通过使用文件数据结构并且基于块数据类型为各个块选择压缩而将相同数据类型的数据分组成块的编码网络。根据该专利的优选编码网络使用称为基本-过滤-资源(Base-Filter-Resource:BRF)系统的体系结构。该方法把对特定格式压缩的优势结合在通用压缩工具中,从而适用于大量的数据格式。源数据被解析为相似数据的块,并且每个解析的块是使用分别选择的压缩算法来压缩的。可以从数据的静态模型中选择算法,或者算法能够适应于在解析块中的数据。然后将解析块组合成编码的数据文件。特别地,系统优选地包括一种用于将源数据分解成各个分量的方法。称为“结构翻转(flipping)”的基本方法提供了将格式信息转换为压缩模型的关键(key)。结构翻转重新组织在文件中的信息以使通常分离的相似分量被集合在一起。
因此,作为本发明的该文献公开了一种用于压缩信息的方法。而且,可以如所描述的两部分的解决方案来理解本专利。然而,如果是这种情况,那么两部分的解决方案中的第一部分包括用于压缩第二部分所包括的信息的密钥。换句话说,本专利能够被理解为两部分的解决方案,于是在该两部分的解决方案中的第一部分不包括第二部分所包括的信息的结构定义。尤其是,本专利所公开的密钥不包括标记文档中所包括的信息的结构定义。特别地,本专利没有描述一种适于使用两部分解决方案来压缩标记文档等等的压缩。
发明内容
因为由标记语言和标记文档等实现的两部分的解决方案不适于在低带宽环境中交换信息,这是由于主要由标记文本等引起的开销信息,所以需要一种最小化开销信息的简单且不复杂的解决方案。因此,本发明优选实施例的主要目的在于提供一种压缩方法和装置,尤其(但不唯一)用于标记数据。因此,本发明的优选实施例公开一种通过使用两部分解决方案中的第一定义部分来为第一部分中定义的标记层次产生短码以最小化开销的方式,该短码用于替换在第二部分中的标记文本。
本发明的其它优点是:
-提供小应用程序(slim application)和独立于数据形式密钥的传输介质,其能够用于将数据包编码为更小的尺寸;
-提供高级应用程序,其具有小的解决方案以通过低带宽网络传输数据,或者从具有较高容量的网络传输数据到具有较低容量的网络;
-提供数据压缩器/解压缩器解决方案,该解决方案是独立的应用程序和平台,其中能够从远程的应用程序和平台独立地开发本地的应用程序和平台。
特别地,本发明的优选实施例提供一种基于两部分解决方案的方法,用于压缩具有标记层次的大量信息,其中第一部分包括信息结构的定义,以及第二部分包括根据在第一部分中定义的结构所配置的信息。此外,第一部分中定义的标记层次能够被分配代码,并且在第二部分中的标记层次可由与特定标记层次对应的代码所代替。
因此,根据优选实施例的本发明提供一种用于压缩具有标记层次并包括具有第一值的数据部分的数据集的方法。数据集是根据定义部分进行配置的。该方法包括以下步骤:至少为所述数据部分分配具有比所述第一值更少值的代码,用所述分配的代码来替换在所述数据集中的所述数据部分,并且产生压缩的数据集。根据一个实施例,标记层次指的是包括第二标记层次的引用,其被解析并被分配代码。每个代码是唯一的并允许有效的压缩。优选地,替换在所述数据集中的标记层次的每个代码被分配一个由所述标记层次指示的值。根据另一个优选实施例,替换在所述数据集中的标记层次的代码被分配一个值,该值被由所述标记层次所指示的引用所包括。由所述数据集中的标记层次指示的值可以是在所述数据集中定义的有限值集合中的一个,其中每个值被分配了替换所述数据集中的所述值的代码,或者在所述数据集中的标记层次所指示的值是数字,并由数值表示来替换。最优选地,定义部分是文档类型定义(DTD)或XML模式,并且所述数据集是标记文档;因此允许使用通常可用的成分。最优选地,标记文档是根据诸如XML、SGML之类的标记语言进行构建的。
本发明也涉及一种将数据集从第一应用程序传送到第二应用程序的方法。该数据集具有标记层次并包括具有第一值的数据部分。该数据集是依据定义部分进行配置的。该方法包括以下步骤:产生代码集作为压缩密钥来定义在所述定义部分中所定义的所述数据部分,其中代码具有比所述第一值更少的值,存储所述代码集,至少为所述标记层次分配所述集合的代码,用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集,并将所述压缩数据集和所述代码集传送到所述第二应用程序。最优选地,但依据网络协议,代码集和所述压缩数据是以包传送的。一个包至少包括消息类型字段、发送接收应用程序标识字段、压缩密钥和压缩数据。一个包还可以包括消息版本字段,并包含被发送到用于处理密钥压缩的压缩处理器的信息。压缩密钥与相对于所述压缩密钥而压缩的每个压缩数据传输一起被传输一次或多次。传输可以通过对压缩密钥进行压缩而进一步增强。压缩数据是在附加步骤中进行压缩的,从而进一步增强了传输率。
本发明还涉及一种用于在至少两个站(station)之间进行数据传输的系统,所述数据包括依据任一前述权利要求的压缩数据集。该系统包括:压缩部分,其包括:用于启动压缩过程的压缩处理器;用于产生和处理与代码对应的密钥的密钥处理器;用于处理产生的密钥的存储的存储设备;用于实施第一步骤以对要利用密钥进行压缩的数据集进行编码的转换器;用于实施第二步骤以优化要被压缩的数据集的优化器;用于实施压缩本身的第三步骤的压缩器。传输部分包括:用于处理所有通信的传输器,相对于包产生消息以用于传输和接收的的包处理器,用于收听(listen)数据传输的接口。该系统进一步包括压缩密钥处理器、压缩文档处理器、非压缩数据集处理器以及协议处理器。传输部分处理唯一的应用程序标识的产生,因此接收器能够识别输入数据以及还有具有唯一标识的密钥。
本发明还涉及一种机器可读的并且编码用于压缩数据集的程序的程序存储设备,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的。所述程序包括:用于至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
本发明还涉及一种计算机可读程序代码装置,用于使计算机压缩数据集,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的。该计算机可读程序代码装置包括:用于至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
根据本发明提供一种产品,其包括计算机可用介质,该计算机可用介质具有在其中包括的用于进行数据集的压缩的计算机可读程序代码装置,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的。在所述产品中的所述计算机可读程序代码装置包括:用于至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
本发明还涉及一种包括计算机可读程序代码装置的传播信号,该程序代码装置用于进行数据集的压缩,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的。在所述传播信号中的所述计算机可读程序代码装置包括:用于至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
本发明还涉及一种具有在其中存储的协议的计算机可读介质,所述协议具有多个用于从远程应用程序中获取压缩数据的消息。所述协议包括:用于接收一组压缩数据集的请求消息,用于接收用来压缩所述压缩数据集的代码集的请求,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,至少为所述标记层次分配具有比所述第一值更少值的代码,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分,包括所述压缩数据和所述代码的响应,包括应用程序的标识和代码的唯一标识的响应。
根据一个方面,提供一种通信系统,该通信系统包括控制第二单元通过通信网络进行通信的第一单元。第一单元发送具有标记层次并包括具有第一值的数据部分的数据集。该数据集是依据定义部分进行配置的。所述系统进一步包括压缩单元和解压缩单元。压缩单元被配置为:至少为所述数据部分分配具有比所述第一值更少值的代码,用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集。第一单元可以是移动台、移动电话、掌上型计算机(palm sizecomptuer)、计算机等的任何一个。第一单元可以是远程控制或监控设备。第二单元可以是远程受控装置,例如机器人、车辆和导弹。
附图说明
现在将参考附图更详细地描述本发明的优选实施例,其中:
图1是说明传输根据本发明一个优选实施例压缩的数据的数据通信系统的块的流程图,
图2示出了示例XML文档及其相关文档类型定义(DTD)的表格,补充了示例的和相关的压缩密钥以及示例的和相关的压缩结果。
图3是说明压缩步骤的流程图,
图4是说明密钥产生步骤的流程图,
图5是说明根据本发明的示例系统的类层次的框图,
图6a-6c说明根据本发明一个实施例的消息包字段,以及
图7是说明根据本发明一个优选实施例的示例性应用程序的框图。
具体实施方式
以下将参考XML数据集以示例的方式描述优选实施例。然而应该理解,本发明并不限于XML,其它标记语言也可以使用。
现在参考图1和2来描述本发明的主要步骤。假设应用程序1想要将图2中的XML数据集“MARKUP DOCUMENT”(i)发送到通信网络100中的应用程序2。应用程序1调用根据本发明的压缩器过程在将数据发送到应用程序2之前将其压缩。
根据本发明的优选实施例,第一步骤(1)是使用DTD(ii)或XML模式或某一其它定义部分来产生密钥(iii),该密钥包括根据定义部分所允许的基本上所有标记的短码。下面更为详细地描述密钥产生过程。产生的密钥被存储(2)在存储设备10(例如在这种情况下被实现为数据库)中,并且接着用于第二步骤,以用在密钥中存储的短码来替换在相关标记文档中的所有标记或者包括从应用程序1接收的部分的一些其它信息。压缩结果被公开在图2(iv)中。通过这种方式将明显减小标记文档的大小。此外,文档大小可以在几个步骤中减小。压缩文档和密钥都被返回(3)到应用程序1,其通过网络100将它们发送(5)到应用程序2。可以利用传输代理来实现(4)传输。以下将更详细地描述传输代理。而且,应用程序1可以启动对标记文档的压缩以将文档发送至应用程序2、或者由应用程序2从应用程序1检索文档。存储设备可以被实施在应用程序1的网络之中的任何位置;它也可以被定位以使两个应用程序都能访问该存储设备以获取密钥和DTD文件。
当然,应用程序2可以通过访问存储设备(6)来获取密钥。因此,存储设备可以是企业内部互联网、因特网、通信网络或通信设备的一部分。密钥可以被自动传输(下面描述),从存储设备中进行检索或者在使用公用DTD的第二应用程序中产生。
图3说明以输入300要压缩的文档开始的压缩过程。在第一步骤中,密钥是从存储设备305输入的。
结合对图4的流程图的说明来更为详细地描述密钥产生过程。压缩开始于检查310要压缩的文档/数据集,于是使用320所述密钥来压缩文档。该过程通过寻找与密钥对应的信息来浏览330文档。如果发现字符代码,则用新代码代替340并插入350到压缩文档中。否则将发现的数据(即值)插入到压缩文档中。执行该过程直到搜索了整个文档。
在一些应用程序中,可以使用DTD、XML模式或者别的类似或有关的定义部分来直接压缩相关的标记文档而不使用密钥。然而,如果DTD或者某一其它定义部分用于直接压缩标记文档,那么压缩密钥必须是在任何压缩之前从定义部分中提取的。这是尤其费时的,并且信息交换中的延迟通常被认为是缺点,尤其是在实时应用中交换信息的时候。
为了实现压缩标记文档的交换,必须分配所产生的压缩密钥,所述压缩密钥必须由接收器使用以解压缩文档。第一次当相关文档被发送到特定接收器时,所讨论的密钥可以被发送。接收器可选择地要求来自发送器的密钥,例如如果接收器已经丢失密钥或者如果密钥的原始传输并不成功。
而且,密钥必须用唯一的标识来标记以使接收器能够挑选与接收的将要解压缩的文档相关的正确的压缩密钥。存在若干方式来标记密钥,并且在这一点的一种可能性是在定义部分中即在DTD或XML模式之类中设置标识。这使系统(例如XML解析器或密钥产生器)能够检查特定定义部分和特定标记文档包括相同的标识,其中相同的标识意味着定义的部分能够用于产生压缩密钥来压缩所讨论的文档。重要的是,密钥标识在其中密钥和相关的压缩文档要进行交换的环境中是唯一的。被设计成产生具有足够低重复性的数字的随机算法是用于产生标识的一个替代。
密钥产生
图4说明显示产生400密钥的主要步骤的流程图。密钥产生开始于控制405密钥是否存在。对密钥的搜索可以在存储设备或公用数据库中进行,或者可以将请求发送至第二应用程序以用于提供DTD。如果密钥不存在,那么获取410DTD并使用解析器420,其使用例如获取的DTD(或XML模式)来产生密钥。接着将密钥返回430(和/或存储以用于随后的访问)至压缩器过程。在步骤400,如果例如通过仔细检查存储设备索引而检测到密钥存在,那么从存储设备中获取440密钥并返回450至应用程序。
参考图2,可以通过将新代码分配给在标记文档中的标记来产生压缩密钥。代码可以包含替换标记的原始名称的一个或多个字符。图2中的示例DTD包含元素start、vehicle、head、status、doors和speed。然而,元素start和vehicle包含其它元素,即它们不包含任何字符数据。因此,如果start和vehicle被分配一个新的单个代码则不会丢失信息。然而,如果一些元素(如这个例子中的元素vehicle)包括一个或多个属性,那么优选地属性信息应该被保留。
结果就是包含值(字符数据)的那些标记将被分配新代码。换句话说,每个新代码对应一直引到特定值的相应标记的名称,即指在特定值上的标记的链或层次。然而应该注意,即使一种方法或系统等没有将代码分配给在DTD等中定义的指在特定值上的每个标记层次,但它也仍在本发明的主题之内。
正如在图2中可看到的,压缩密钥开始于<XMLKey>,它只指出这是压缩密钥。这个介绍之后是<info>元素,该元素包括具有值(未在示例DTD和示例标记文档中示出)的<KeyID>元素,该值标识与某一DTD和某一标记文档相关的密钥。应该强调的是,这是个例子,并且压缩密钥可以在不背离本发明的情况下具有许多其它序言和/或更为扩展的序言。
序言后面是几个<item>元素,该元素又包括元素<code>、<name>、<type>和<format>。现在在下面将详细地描述这些元素。
<code>元素包含新的替换代码,所述代码具有比原始代码更少的二进制大小,其中四个新代码“a”、“b”、“c”和“d”是根据图2中的示例产生的。第一代码“a”对应于标记名称“start”、“vehicle”和“ok”,其在标记文档中指在值“yes”上。第二代码“b”对应于标记名称“start”、“vehicle”和“doors”,其在标记文档中指在值“locked”上,以及第三代码“c”对应于名称“start”、“vehicle”和“speed”,其在标记文档中指在值“95”上。第四代码“d”对应于标记名称“start”、“vehicle”和“head”,其指在实体引用“&lable”上。
正如从图2中可看到的,压缩密钥包括<name>元素,该元素包含与由前面的<code>元素所包含的代码对应的所有标记名称。换句话说,在<name>元素中的标记名称已被分配了由前面的<code>元素所包括的代码。
应该强调的是,代码“a”、“b”、“c”和“d”只是可能的代码的示例。可以使用其它代码,并且代码可以包含所有可能的符号、字符和值。然而,在一些应用程序中一些限制可能是必要的,例如其为了预定目的而使用特殊字符。然而,代码应该优选为唯一的,即代码应该优选为在某一压缩密钥中仅仅出现一次。其它解决方案是可以想到的但不是优选的。例如,可以在压缩和/或解压缩算法中实施某种逻辑,其例如通过考虑压缩密钥的结构而能够区分相同的代码。然而,这种逻辑会使压缩和/或解压缩变复杂,因此它不是优选的。
此外,压缩密钥应该优选地包括使压缩的标记文档的接收器能够解压缩该文档的信息。在上例中,这是通过提供<type>元素而实现的,其中该元素指定了标记的类型,例如属性、元素和引用。有关由代码所指示的值的格式的信息已通过提供<format>元素来实现,其中该元素指定值的格式,例如串和整数。
然而,以上伴随代码的信息只是可能的信息的示例,所述信息使得能够对压缩的标记文档进行解压缩。在一些应用程序中会需要更多和/或其它信息。
压缩
如上所述的压缩密钥或者其它类似或相关密钥可以用于压缩和解压缩标记文档。压缩的标记文档又可以被构建为标记文档,例如XML文档。在压缩的文档中保持标记结构具有的优点在于,它使解析器(例如XML解析器)能够检查和解析压缩的文档。这在例如直接使用压缩的文档即没有任何解压缩的一些应用程序中是优选的。
以上标记文档的标记类型压缩的例子可以是:
<start a=“yes”b=“locked”c=“95”d=“Motor Vehicle”/>
根据XML规范,该结构对应于空元素。在该例子中“start”(即标记文档的根元素)已被选择来表示空元素的名称,而“a”、“b”、“c”和“d”表示空元素的属性。应该注意的是,字母“start”也可以被压缩和替换,例如由字母“s”或某一其它唯一的代码。
正如根据图2从压缩密钥中的<name>元素可推导出的,通过利用代码“a”替换元素“start”、“vehicle”和属性“ok”来执行压缩。同样地,代码“b”已经替换了元素“start”、“vehicle”和“doors”,而代码“c”已经替换了元素“start”、“vehicle”和“speed”,以及代码“d”已经替换了元素“start”、“vehicle”和“head”。
此外,代码“a”已被分配了值“yes”,这是由与代码“a”对应的元素和属性所指示的值。同样代码“b”和“c”已被分别分配了值“locked”和“95”,这是由分别与代码“b”和“c”对应的元素所指示的值。
剩余的代码“d”不同于前面的代码“a”、“b”和“c”,因为代码“d”不指示任何值,至少不直接指示。代之以,在这个例子中与代码“d”对应的元素一直引到在标记文档中的实体引用,即实体引用“&lable”。所指示的引用只表示应该插入来替换在标记文档中的引用的值。因此,压缩文档中的引用必须由其表示的值来替换,在这个例子中是“Motor Vehicle”。
一些标记语言可以支持比在这个例子中说明的简单引用更为复杂的引用。例如,一个引用又可以指向另一个引用,该引用表示应该替换在标记文档中的原始引用的值。于是在压缩的标记文档中的相关代码应该优选地被分配将代替在标记文档中的原始引用的值。引用也可以指向例如在DTD等之内预先定义的全部元素。所指向的元素应该于是优选地被解析和分配代码,其中元素所包括的可能值优选地应该被分配给该代码。如果引用的链继续,那么优选地应该重复相同的解析过程。
进一步压缩
尽管到目前为止所讨论的压缩能够产生标记字符串,例如串“<start a=“yes”b=“locked”c=“95”d=“Motor Vehicle”/>”,但是通过替换空格和其它中间字符甚至可以进一步来执行压缩。
例如串“<start a=“yes”b=“locked”c=“95”d=“Motor Vehicle”/>”可以由串“a<yes>b<locked>c<95>d<Motor Vehicle>”来表示。
正如可看到的,该压缩串不对应依据XML标准的空元素,这意味着标记格式已被放弃了。“start”标签已被删除,并且引号和等号(=”)已由“<”字符替换,而引号和空白字符(”)已由“>”字符替换。另外,如果正如在这个例子中开始和结束符号都被删除了,那么有必要提供其它开始和结束符号来将压缩文档从其它压缩文档或者更一般地从其它传输的数据中分离出来。这可以以许多方式来实现,例如通过在压缩部分中的压缩处理器(510),或者通过在传输部分中的包处理器(555)。
此外,能够进一步压缩只可以采用有限集合的预定值中的一个的变量等。例如,属性“ok”已由关键字“#IMPLIED”定义,其具有两个限定符“yes”和“no”,它表示如果属性“ok”的确在标记文档中被提供了值,那么它一定是“yes”或“no”。换句话说,属性“ok”可以具有三个状态,即“yes”、“no”或者什么也没有。更一般的解释是,象“ok”之类的属性可以被分配有限集合的预定值中的一个,即属性“A”例如可以被分配在有限集合{a,b,c,d}中的值。该预先的知识能够用于压缩属性值,尤其是因为这种值可以具有比这个例子中的简单“yes”和“no”更多的字符。一种解决方案是只向压缩密钥提供信息,该信息显示属性的第一允许值应该由数字1替换,第二允许值应该由数字2替换等等。在根据图1的例子中的属性“ok”的可能值“yes”和“no”可以分别由数字“1”和“2”替换。这意味着图2中的代码“a”可以被分配“1”来替换“yes”,被分配“2”来替换“no”,以及被分配“3”来替换空格值。然而,空格值可以作为替换而被省略。
而且,代码“c”已被分配了由在标记文档中的相应“speed”元素所包括的字符“95”。根据在图2中的例子,这对应于整数值95,其被设想为表示车辆的速度。根据信息交换领域所使用的大多数字符集,字符的表示通常需要至少一个字节(8个1和/或0),而一个字节可以表示十进制的整数29-1=255。如果需要两个字符来表示数字,那么这些字符占用两个字节(16个1和/或0),而两个字节可以表示十进制整数217-1=65535。这意味着用整数、浮点数或某一其它数字表示来替换表示数字的字符是有利的。
根据本发明最佳模式的压缩器能够被实现为图5的框图中所说明的类结构。从应用程序500的角度来看,产生了压缩部分和传输部分。密钥编码和压缩是在压缩部分执行的,而压缩信息包的建立和传输是在传输部分内执行的。
在压缩部分:
-压缩处理器510启动压缩过程,并且应用程序利用该类来处理所有压缩;
-密钥处理器520产生并处理密钥;
-数据库或另一存储设备525处理所产生密钥的存储。
-转换器530实施转换中的第一步骤,即利用密钥编码要被压缩的数据;
-优化器535实施转换中的第二步骤,即优化要被压缩的数据集。
在XML文档的情况下,放弃文档的结构。
-压缩器540实施第三步骤,即压缩本身。
根据要求和需要,最后提到的三个执行步骤能够以多种方式来实现。
在传输部分:
-传输550是处理所有通信相关问题的抽象类;
-包处理器555产生关于包(570)的消息以用于传输和接收。
-传输收听器560是用于收听数据传输(寻找所寻址的数据包)的接口
还存在多个帮助类,例如需要它们用于存储和传输在网络上的数据。它们是:压缩密钥575、压缩文档580、原始文档585和协议590。
传输
正如早先所提到的,根据本发明的优选实施例,传输代理(图1)可以在传输压缩数据时被使用。图5说明传输处理的主要部分。
所有要被发送的数据由应用程序500存储在类型包570的包中。接着包由包处理器555进行处理,在其中产生了将要在应用程序之间传输的消息。接着发送应用程序例如通过HTTP或TCP网络接口(socket)发送包。
要发送的消息能够具有不同的外观。图6a-6c说明了三个例子。
这些是用于传送密钥请求、密钥和数据的。在输入消息中头四个字段用于传输部分,以及剩余字段由压缩处理器510进行处理。
这些字段可以以下面的方式进行使用:
版本(Vers):包含消息格式的版本;
类型(Type):包含消息的类型,即密钥请求、密钥或数据;
本地应用程序ID(Local Appl.ID):包含本地(发送)应用程序标识;
远程应用程序ID(Remote Appl.ID):包含远程(接收)应用程序标识;
密钥ID(Key ID):包含与数据或密钥联系的密钥的标识;
信息(Info):包含被发送到压缩处理器510的信息,例如密钥是否被压缩;
密钥(Key):包含用于压缩数据的密钥;它能够依据Info的内容而被压缩或不被压缩;
数据(Data):包含数据(例如压缩的XML文档),其依据Info的内容而被压缩或不被压缩;
除了Data和Key以外,每个字段都可以是数字位,该数字位显然必须具有不同的大小。应该理解的是,依据要求和需要可以使用其它字段和包。
传输部分处理唯一应用程序ID的产生。优选地,使用本发明的压缩过程的每个应用程序都需要应用程序ID,这样传输部分就能够处理几个不同的应用程序。原因在于接收应用程序应该优选地例如基于应用程序标识来识别输入数据以及还有具有唯一标识的密钥。
正如从以上所显示的,密钥和发送的数据都能够被压缩。另外,密钥和压缩数据能够利用用于压缩任何数据的常见压缩技术来压缩。事实上,如上所述的压缩过程能够使用初始检查来查明是否值得利用如所述的密钥压缩技术来压缩数据。这一点的基础可以基于例如值和标签的数量。如果值的数量大于标签,则没有必要执行根据本发明的压缩,而只可以执行普通的压缩。然而,在根据本发明的压缩之后要传送的数据集(以及产生的密钥)可以进一步利用普通的压缩方法来压缩,所述普通的压缩方法例如是PKZIP、Huffman编码、Lempel-Ziv编码、BSTW、Shannon-Fano等。
最后,基于接收的或者预先存储的密钥的接收应用程序通过反向压缩步骤来解压缩所接收的压缩的数据集。
表1公开的下面的例子说明本发明的有效的压缩方法。该测试是基于通过GPRS(通用分组无线电业务)来传送数据。起始数据是XML文档。
表1
文档大小(字节) | 数据量 | |
XML | 压缩的XML | |
104 | 104 | 14 |
3141 | 3141 | 419 |
102768 | 102768 | 820 |
本发明可以被实现为:硬件和/或软件解决方案;可以在指令集存储器中执行的软件、传播信号等。
在下面参考图7所说明的示例实施方案700来描述本发明。
根据该例子,应用程序1 710将数据集传送至应用程序2 720。应用程序1例如可以是移动台(例如移动电话)、掌上型计算机、计算机等中的任何一个,其例如用作远程控制或监控设备。应用程序2可以是远程受控装置,例如机器人、车辆、导弹等。应用程序1与应用程序2通过具有低带宽的网络730进行通信。应用程序1还通过具有高带宽的网络740进行通信。
根据该例子,应用程序1以XML文档的形式将控制消息发送至应用程序1。来源于应用程序1的消息通过传输路由器750进行路由,这取决于所寻址的目的地、被发送到正确目的地的消息。发送至应用程序2的XML文档通过压缩单元760,如早先所述,该压缩单元压缩文档并经由低带宽网络730将其发送至应用程序2。在应用程序2接收其之前,解压缩单元770解压缩所压缩的文档。
例如,如果响应消息从应用程序2被发送回到应用程序1,那么压缩和解压缩单元以相反的方式运行,即解压缩单元770压缩消息,而解压缩单元760解压缩消息。
本发明不应该被认为限于上述的优选实施例,而是包括由所附权利要求书限定的范围所覆盖的所有可能的变形。
Claims (28)
1、一种用于压缩数据集的方法,该数据集具有标记层次并包括具有第一值的数据部分,所述数据集是根据定义部分进行配置的,该方法包括以下步骤:
·至少为所述数据部分分配具有比所述第一值更少值的代码,
·用所述分配的代码来替换在所述数据集中的所述数据部分,并且产生压缩的数据集。
2、根据权利要求1所述的方法,其中所述标记层次是指包括第二标记层次的引用,其被解析并被分配代码。
3、根据权利要求1所述的方法,其中每个代码是唯一的。
4、根据任一前述权利要求所述的方法,其中替换在所述数据集中的标记层次的每个代码被分配一个由所述标记层次指示的值。
5、根据权利要求1所述的方法,其中替换在所述数据集中的标记层次的代码被分配一个值,该值被由所述标记层次指示的引用所包括。
6、根据权利要求4或5之一所述的方法,其中由在所述数据集中的标记层次指示的值是在所述数据集中定义的有限集合的值中的一个,其中每个值被分配一个替换在所述数据集中的所述值的代码。
7、根据权利要求4或5中任何一项所述的方法,其中由在所述数据集中的标记层次所指示的值是数字,并且由数值表示来替换。
8、根据权利要求1所述的方法,其中所述定义部分是文档类型定义(DTD)或XML模式,并且所述数据集是标记文档。
9、根据权利要求8所述的方法,其中所述标记文档是根据如XML、SGML之类的标记语言构建的。
10、一种将数据集从第一应用程序传送到第二应用程序的方法,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,所述方法包括以下步骤:
·产生代码集作为压缩密钥来定义在所述定义部分中所定义的所述数据部分,其中代码具有比所述第一值更少的值,
·存储所述代码集,
·至少为所述标记层次分配所述集合的代码,
·用所述分配的代码来替换在所述数据集中的所述数据部分,并且产生压缩的数据集,以及
·将所述压缩的数据集和所述代码集传送到所述第二应用程序。
11、根据权利要求10所述的方法,其中所述代码集和所述压缩数据是以包传送的。
12、根据权利要求11所述的方法,其中一个包至少包括消息类型字段、发送接收应用程序标识字段、压缩密钥和压缩的数据。
13、根据权利要求12所述的方法,其中一个包进一步包括消息版本字段,并包含被发送到用于处理密钥压缩的压缩处理器(510)的信息。
14、根据权利要求10所述的方法,其中所述压缩密钥与相对于所述压缩密钥而压缩的每个压缩数据传输一起被传输一次或多次。
15、根据权利要求10-14的任何一项所述的方法,其中所述压缩密钥是压缩的。
16、根据权利要求10-15的任何一项所述的方法,其中所述压缩数据是在附加步骤中被压缩的。
17、一种用于在至少两个站之间进行数据传输的系统,所述数据包括依据任一前述权利要求的压缩数据集,该系统包括:
-压缩部分,包括:
°用于启动压缩过程的压缩处理器(510);
°用于产生和处理与代码对应的密钥的密钥处理器(520);
°用于处理产生的密钥的存储的存储设备(10,525);
°用于实施第一步骤以对要利用密钥进行压缩的数据集进行编码的转换器(530);
°用于实施第二步骤以优化要被压缩的数据集的优化器(535);
°用于实施压缩本身的第三步骤的压缩器(540),
-传输部分,包括:
°用于处理所有通信的传输器(550),
°相对于包(570)产生消息以用于传输和接收的包处理器(555),
°用于收听数据传输的接口(560)。
18、根据权利要求17所述的系统,进一步包括压缩密钥(575)处理器、压缩文档处理器(580)、非压缩数据集处理器(585)以及协议处理器(590)。
19、根据权利要求17所述的系统,其中传输部分处理唯一的应用程序标识的产生,以使接收器能够识别输入数据以及还有具有唯一标识的密钥。
20、一种机器可读的并且编码用于压缩数据集的程序的程序存储设备,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,所述程序包括:
·至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及
·用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
21、一种用于使计算机压缩数据集的计算机可读程序代码装置,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,所述计算机可读程序代码装置包括:
·至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及
·用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
22、一种包括计算机可用介质的产品,该计算机可用介质具有在其中包括的用于进行数据集的压缩的计算机可读程序代码装置,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,在所述产品中的所述计算机可读程序代码装置包括:
·至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及
·用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
23、一种包括计算机可读程序代码装置的传播信号,所述计算机程序代码装置用于进行数据集的压缩,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,在所述传播信号中的所述计算机可读程序代码装置包括:
·至少为所述标记层次分配具有比所述第一值更少值的代码的指令集,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及
·用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集的指令集。
24、一种具有在其中存储的协议的计算机可读介质,所述协议具有多个用于从远程应用程序中获取压缩数据的消息,所述协议包括:
·用于接收一组压缩数据集的请求消息,
·用于接收用来压缩所述压缩的数据集的代码集的请求,所述数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,至少为所述标记层次分配具有比所述第一值更少值的代码,其中所述标记层次定义在所述定义部分中定义的所述数据部分,以及用所述分配的代码来替换在所述数据集中的所述数据部分,
·包括所述压缩的数据和所述代码的响应,
·包括应用程序的标识和代码的唯一标识的响应。
25、一种通信系统,包括控制通过通信网络(730)进行通信的第二单元(720)的第一单元(710),所述第一单元发送数据集,该数据集具有标记层次并包括具有第一值的数据部分,所述数据集是依据定义部分进行配置的,所述系统进一步包括压缩单元(760)和解压缩单元(770),其中所述压缩单元被配置为:
·至少为所述数据部分分配具有比所述第一值更少值的代码,
·用所述分配的代码来替换在所述数据集中的所述数据部分并产生压缩的数据集。
26、根据权利要求25所述的系统,其中所述第一单元(710)是移动台、移动电话、掌上型计算机、计算机之类中的任何一个。
27、根据权利要求25所述的系统,其中所述第一单元(710)是远程控制或监控设备。
28、根据权利要求25所述的系统,其中所述第二单元(720)是远程受控装置,例如机器人、车辆和导弹。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/SE2003/001187 WO2005003996A1 (en) | 2003-07-08 | 2003-07-08 | Method for compressing markup languages files, by replacing a long word with a shorter word |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1802642A true CN1802642A (zh) | 2006-07-12 |
Family
ID=33563186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA038267608A Pending CN1802642A (zh) | 2003-07-08 | 2003-07-08 | 通过利用较短字代替长字来压缩标记语言文件的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070112810A1 (zh) |
EP (1) | EP1654675A1 (zh) |
CN (1) | CN1802642A (zh) |
AU (1) | AU2003245222A1 (zh) |
WO (1) | WO2005003996A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222476B (zh) * | 2007-01-08 | 2010-09-29 | 华为技术有限公司 | 一种可扩展标记语言文件编辑器、文件传输方法及系统 |
CN102790766A (zh) * | 2012-06-29 | 2012-11-21 | 华为技术有限公司 | 对象查询的方法、系统、对象查询装置和对象查询获取装置 |
CN104025068A (zh) * | 2012-01-02 | 2014-09-03 | 国际商业机器公司 | 来自多个来源的css定义的冲突解决 |
CN106951269A (zh) * | 2017-03-31 | 2017-07-14 | 武汉斗鱼网络科技有限公司 | 一种提升安卓应用的布局文件编写效率的方法及系统 |
CN107025212A (zh) * | 2016-01-13 | 2017-08-08 | 富士通株式会社 | 编码方法、编码装置、解码方法和解码装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9401838B2 (en) * | 2003-12-03 | 2016-07-26 | Emc Corporation | Network event capture and retention system |
US20060173865A1 (en) * | 2005-02-03 | 2006-08-03 | Fong Joseph S | System and method of translating a relational database into an XML document and vice versa |
US7370060B2 (en) * | 2005-05-24 | 2008-05-06 | Microsoft Corporation | System and method for user edit merging with preservation of unrepresented data |
US7788580B1 (en) | 2006-03-28 | 2010-08-31 | Amazon Technologies, Inc. | Processing digital images including headers and footers into reflow content |
US8023738B1 (en) | 2006-03-28 | 2011-09-20 | Amazon Technologies, Inc. | Generating reflow files from digital images for rendering on various sized displays |
US7433548B2 (en) * | 2006-03-28 | 2008-10-07 | Amazon Technologies, Inc. | Efficient processing of non-reflow content in a digital image |
US7966557B2 (en) * | 2006-03-29 | 2011-06-21 | Amazon Technologies, Inc. | Generating image-based reflowable files for rendering on various sized displays |
US7715635B1 (en) | 2006-09-28 | 2010-05-11 | Amazon Technologies, Inc. | Identifying similarly formed paragraphs in scanned images |
US7810026B1 (en) | 2006-09-29 | 2010-10-05 | Amazon Technologies, Inc. | Optimizing typographical content for transmission and display |
US7836396B2 (en) * | 2007-01-05 | 2010-11-16 | International Business Machines Corporation | Automatically collecting and compressing style attributes within a web document |
US20080313291A1 (en) * | 2007-06-12 | 2008-12-18 | Smartmicros Usa, Llc | Method and apparatus for encoding data |
US8782516B1 (en) | 2007-12-21 | 2014-07-15 | Amazon Technologies, Inc. | Content style detection |
US8572480B1 (en) | 2008-05-30 | 2013-10-29 | Amazon Technologies, Inc. | Editing the sequential flow of a page |
US9229911B1 (en) | 2008-09-30 | 2016-01-05 | Amazon Technologies, Inc. | Detecting continuation of flow of a page |
US8499236B1 (en) | 2010-01-21 | 2013-07-30 | Amazon Technologies, Inc. | Systems and methods for presenting reflowable content on a display |
CN102480335B (zh) * | 2010-11-30 | 2015-08-05 | 金蝶软件(中国)有限公司 | 一种业务数据的发送方法及系统 |
US10817662B2 (en) * | 2013-05-21 | 2020-10-27 | Kim Technologies Limited | Expert system for automation, data collection, validation and managed storage without programming and without deployment |
CN104252412B (zh) * | 2013-06-28 | 2017-12-29 | 国际商业机器公司 | 用于css冲突的自动检测的方法和系统 |
WO2018053418A1 (en) | 2016-09-19 | 2018-03-22 | Kim Technologies Limited | Actively adapted knowledge base, content calibration, and content recognition |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3859313B2 (ja) * | 1997-08-05 | 2006-12-20 | 富士通株式会社 | タグ文書の圧縮装置および復元装置,圧縮方法および復元方法,圧縮/復元装置および圧縮/復元方法並びに圧縮,復元もしくは圧縮/復元プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6253624B1 (en) * | 1998-01-13 | 2001-07-03 | Rosemount Inc. | Friction flowmeter |
US6163811A (en) * | 1998-10-21 | 2000-12-19 | Wildseed, Limited | Token based source file compression/decompression and its application |
US6635088B1 (en) * | 1998-11-20 | 2003-10-21 | International Business Machines Corporation | Structured document and document type definition compression |
US6510434B1 (en) * | 1999-12-29 | 2003-01-21 | Bellsouth Intellectual Property Corporation | System and method for retrieving information from a database using an index of XML tags and metafiles |
JP4774145B2 (ja) * | 2000-11-24 | 2011-09-14 | 富士通株式会社 | 構造化文書圧縮装置および構造化文書復元装置並びに構造化文書処理システム |
US20020107866A1 (en) * | 2001-02-06 | 2002-08-08 | Cousins Robert E. | Method for compressing character-based markup language files including non-standard characters |
JP4163870B2 (ja) * | 2001-12-28 | 2008-10-08 | 富士通株式会社 | 構造化文書変換装置 |
US6711740B1 (en) * | 2002-01-17 | 2004-03-23 | Cisco Technology, Inc. | Generic code book compression for XML based application programming interfaces |
-
2003
- 2003-07-08 AU AU2003245222A patent/AU2003245222A1/en not_active Abandoned
- 2003-07-08 CN CNA038267608A patent/CN1802642A/zh active Pending
- 2003-07-08 EP EP03738851A patent/EP1654675A1/en not_active Withdrawn
- 2003-07-08 US US10/563,059 patent/US20070112810A1/en not_active Abandoned
- 2003-07-08 WO PCT/SE2003/001187 patent/WO2005003996A1/en active Application Filing
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222476B (zh) * | 2007-01-08 | 2010-09-29 | 华为技术有限公司 | 一种可扩展标记语言文件编辑器、文件传输方法及系统 |
CN104025068A (zh) * | 2012-01-02 | 2014-09-03 | 国际商业机器公司 | 来自多个来源的css定义的冲突解决 |
CN102790766A (zh) * | 2012-06-29 | 2012-11-21 | 华为技术有限公司 | 对象查询的方法、系统、对象查询装置和对象查询获取装置 |
CN107025212A (zh) * | 2016-01-13 | 2017-08-08 | 富士通株式会社 | 编码方法、编码装置、解码方法和解码装置 |
CN106951269A (zh) * | 2017-03-31 | 2017-07-14 | 武汉斗鱼网络科技有限公司 | 一种提升安卓应用的布局文件编写效率的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2005003996A1 (en) | 2005-01-13 |
US20070112810A1 (en) | 2007-05-17 |
AU2003245222A1 (en) | 2005-01-21 |
EP1654675A1 (en) | 2006-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1802642A (zh) | 通过利用较短字代替长字来压缩标记语言文件的方法 | |
CN1161701C (zh) | 语言识别装置和语言识别方法 | |
US7669120B2 (en) | Method and system for encoding a mark-up language document | |
CN1211743C (zh) | 服务器端的html定制方法和系统 | |
CN1615480A (zh) | 网络设备间配置文件的翻译 | |
CN1328668A (zh) | 用于指定网络上的位置的系统和处理 | |
CN1670728A (zh) | 具有标记数据的完全形式词典及其构建和使用方法 | |
CN1075563A (zh) | 多字节字符串字符的互换代码转换的改进方法 | |
CN1691631A (zh) | 用于对电子名片进行管理的方法 | |
WO2002077896A2 (en) | Dicom xml dtd/schema generator | |
CN1455901A (zh) | Xml编码方案 | |
CN1906609A (zh) | 在数据中心中使用的用于进行数据格式转换的系统 | |
CN101788992A (zh) | 一种数据库查询语句的转换方法和转换系统 | |
CN1315017A (zh) | 包含内部引用的两种版本数据表格之间的差别提取 | |
CN1181618C (zh) | 数据压缩/解压设备/方法 | |
CN1751442A (zh) | 用于压缩以结构化定义语言表达的无线应用程序的系统和方法 | |
CN1732461A (zh) | 基于要素的多个文件的分析系统和方法 | |
CN1518304A (zh) | 在服务器和用户之间形成数据流的方法 | |
CN1905701A (zh) | 一种面向移动终端设备的网络信息发布方法和系统 | |
CN1846207A (zh) | 类型路径索引 | |
MXPA03005874A (es) | Sistema y metodo para soportar xml no nativo en el xml nativo de un documento de procesador de palabras. | |
CN1896994A (zh) | 用于显示零件信息的装置、系统和方法 | |
CN101432733A (zh) | 利用来自搜索的所检索数据来增加电子文档的内容 | |
CN1942931A (zh) | 通过树型分层数据结构的有序横向结构描述比特流语法的音频比特流格式 | |
CN106227575B (zh) | 一种生成与解析文本文件的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20060712 |