《EXI编码器和计算机可读介质.pdf》由会员分享,可在线阅读,更多相关《EXI编码器和计算机可读介质.pdf(20页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102708106 A(43)申请公布日 2012.10.03CN102708106A*CN102708106A*(21)申请号 201110339362.X(22)申请日 2011.11.01070694/2011 2011.03.28 JPG06F 17/30(2006.01)(71)申请人株式会社东芝地址日本东京都(72)发明人土井裕介(74)专利代理机构永新专利商标代理有限公司 72002代理人刘瑜 王英(54) 发明名称EXI 编码器和计算机可读介质(57) 摘要EXI编码器是基于定义了XML文档的XML模式的,该XML文档包括头部分、能够被重复X次或者更多。
2、次并且包含可变内容的主体部分、和尾部分。读取单元顺序地读取对应于可变内容的输入数据,读取次数与主体部分被重复的次数一样多。头部分编码器生成对应于头部分的EXI位串。主体部分编码器生成对应于主体部分的EXI位串,在主体部分中,每当读取单元读取输入数据时,就用输入数据替换变量。尾部分编码器生成对应于尾部分的EXI位串。输出单元输出包括EXI位串的EXI流。(30)优先权数据(51)Int.Cl.权利要求书1页 说明书14页 附图4页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 1 页 说明书 14 页 附图 4 页1/1页21.一种基于XML(可扩展标记语言)模式的EXI(高。
3、效的XML交换)编码器,所述XML模式定义了XML文档的结构,所述XML文档包括头部分、主体部分和尾部分,所述头部分包含固定的XML内容,所述主体部分能被重复X次或者更多次(X是等于或者大于0的整数)并且包含可变内容以及具有固定的XML内容,并且所述尾部分包含固定的XML内容,所述编码器包括:读取单元,被配置为顺序地读取分配给变量符号的输入数据以作为替换目标,其中,所读取的次数与所述主体部分被重复的次数一样多;头部分编码器,被配置为生成对应于所述头部分的所述固定的XML内容的第一EXI位串;主体部分编码器,被配置为生成对应于所述主体部分中所述固定的XML内容的第二EXI位串,在所述主体部分中,。
4、每当所述读取单元读取所述输入数据时,就用所述输入数据替换所述可变内容;尾部分编码器,被配置为生成对应于所述尾部分的所述固定的XML内容的第三个EXI位串;以及输出单元,被配置为输出EXI流,其中,所述EXI流包括所述第一EXI位串、所述第二EXI位串和所述第三EXI位串。2.根据权利要求1所述的编码器,其中,所述主体部分编码器根据所述输入数据已经被读取的次数来生成所述EXI位串。3.根据权利要求1所述的编码器,其中,所述尾部分编码器根据所述主体部分被重复的次数来生成所述EXI位串。4.一种存储用于基于XML(可扩展标记语言)模式的EXI(高效的XML交换)编码的程序的非暂时性计算机可读介质,所。
5、述XML模式定义XML文档结构,所述XML文档包括头部分、主体部分和尾部分,所述头部分包含固定的XML内容,所述主体部分能够被重复X次或者更多次(X是等于或者大于0的整数)并且包含可变内容和具有固定的XML内容,以及所述尾部分包含固定的XML内容,所述程序当被计算机执行时,使得所述计算机执行包括以下的步骤:顺序地读取分配给所述可变内容的输入数据,读取的次数与所述主体部分被重复的次数一样多;生成对应于所述头部分的所述固定的XML内容的第一EXI位串;生成对应于所述主体部分中所述XML内容的第二EXI位串,在所述主体部分中,每当读取所述输入数据时,就用所述输入数据替换所述可变内容;生成对应于所述尾。
6、部分的所述固定的XML内容的第三EXI位串;以及输出EXI流,所述EXI流包括所述第一EXI位串、所述第二EXI位串和所述第三EXI位串。权 利 要 求 书CN 102708106 A1/14页3EXI 编码器和计算机可读介质 技术领域0001 本发明的实施例涉及EXI(高效的XML(可扩展标记语言)交换)编码器和计算机可读介质。 背景技术0002 通过有限状态机基于ASN.1的解释而生成解码器程序的解码器是通常已知的。 0003 可以想到通过类似过程来产生EXI编码器。EXI编码器通常指用来根据针对XML文档的高效交换的EXI规范,将文本XML文档转换成二进制格式的编码器。 0004 要将通。
7、过使用这样的EXI编码器生成的位串正确地映射到XML文档的元素,必须预先准备用于编码的原始XML文档中的所有条目,这导致编码量和/或诸如所需要的存储器容量等的计算资源的增加。这样的EXI编码器不适合包括在具有有限资源的嵌入式设备中。 附图说明0005 图1示出根据本发明的实施例的EXI编码器的配置; 0006 图2是用于说明EXI流结构的示例的图; 0007 图3是用于说明EXI流结构的另一个示例的图; 0008 图4示意地说明了主体部分的EXI位串的例示性构成;以及 0009 图5是示出由EXI编码器执行的处理的流程的流程图。 具体实施方式0010 根据实施例的一个方面,提供了基于定义XML。
8、文档的结构的XML(可扩展标记语言)模式的EXI(高效的XML交换)编码器,所述XML文档包括头(HEAD)部分、主体(BODY)部分和尾(TAIL)部分,头部分包 含固定的XML内容,主体部分能够被重复X次或更多次(X是等于或者大于0的整数)并且包含可变内容以及具有固定的XML内容,并且尾部分包含固定的XML内容。 0011 编码器包括:读取单元、头部分编码器、主体部分编码器、尾部分编码器和输出单元。 0012 读取单元顺序地读取分配给变量符号作为替换目标的输入数据,读取的次数与主体部分被重复的次数一样多。 0013 头部分编码器生成对应于头部分的固定的XML内容的第一EXI位串。 0014。
9、 主体部分编码器生成对应于主体部分中的固定的XML内容的第二EXI位串,其中,在主体部分中,每当由读取单元读取输入数据时,就用该输入数据替换可变内容。 0015 尾部分编码器生成对应于尾部分的固定的XML内容的第三EXI位串。 0016 输出单元输出包括第一EXI位串、第二EXI位串和第三EXI位串的EXI流。 0017 图1示出根据本发明的实施例的EXI编码器的配置。 说 明 书CN 102708106 A2/14页40018 该EXI编码器基于XML文档(对应于EXI流内容的假想的XML文档的模版)和基于定义文档的结构的XML模式,其中,所述XML文档包括包含固定的XML内容的头部分、能够。
10、被重复X次或者更多次(X是等于或者大于0的整数)并且包含可变内容和除了可变内容之外具有固定描述的主体部分,以及包含固定的XML内容的尾部分。 0019 在本实施例中,当在一个主体部分中存在多个可变内容时,它们被共同地称为结构体(structure),其中每个可变内容可以被称为结构体成员。在本实施例中,假定使用该结构体。 0020 可变内容在例如被标签包围的主体或者标签内的属性值点处被描述。 0021 控制单元(读取单元)11顺序地读取用于结构体的输入数据(输入结构体),读取次数与主体部分被重复的次数一样多。 0022 头部分编码器H生成对应于头部分的固定XML内容的EXI位串(第一EXI位串)。
11、。 0023 主体部分计数器12对输入数据已经被处理(即,多少输入结构体已经被处理)的次数进行计数。 0024 主体部分编码器B生成对应于XML内容的EXI位串(第二EXI位串),同时每当读取输入数据时,就用输入数据替换主体部分变量。主体部分子编码器0读取第一输入数据并且主体部分子编码器1读取第二以及随后的输入数据。由此,根据在输入数据前数据已经被读取的次数来生成EXI位串。这一点将在下面进行详细描述。 0025 尾部分编码器T生成对应于尾部分的固定的XML内容的EXI位串(第三EXI位串)。更具体地说,在本实施例中,当有零个主体部分时尾部分子编码器0生成EXI位串,并且当有一个或者更多主体部。
12、分时尾部分子编码器1生成EXI位串。由此,生成了反映主体部分被重复的次数的EXI位串。这一点将在后面进行更详细地描述。 0026 输出单元13输出EXI流,该EXI流是来自头部分编码器的EXI位串、来自主体部分编码器的零个或更多EXI位串以及来自尾部分编码器的EXI位串的序列。输出的EXI流被发送到接收设备并在上面被解码以再生成XML文档。 0027 下面对本实施例进行更详细地描述。在说明书的结尾,提供了示例A.1到A.6作为样本数据,其将在适当的地方被引用。在示例中,被符号包围的部分特别地表示变化部分,在其中描述了成员名(可变内容)。 0028 图1所示的EXI编码器包括头部分编码器H、主体。
13、部分计数器12、由两个主体部分子编码器0和1组成的主体部分编码器B、由两个尾部分子编码器0和1组成的尾部分编码器T、用于根据来自调用方的输入来驱动和控制编码器的控制单元11、以及输出单元13。作为输入的结构体的值(输入数据)由调用方给出并且由控制单元11读入。 0029 取决于输入结构体的格式和/或目标XML模式,两个主体部分子编码器0和1或者两个尾部分子编码器0和1可以是一样的。 0030 控制单元11在初始化时将主体部分计数器12初始化为零,然后调用头部分编码器H。头部分编码器H输出针对预先提供的头部分的EXI位串。即,头部分编码器H,通过使用初始化参数作为输入并且以EXI格式生成对应于要。
14、被输出的EXI流的开头的流的初始信息。 0031 每当给出一个输入数据(结构体)时,控制单元11就将该数据传递给主体部分编码器B。当主体部分计数器12是零时使用主体部分子编码器0, 并且当主体部分计数器12说 明 书CN 102708106 A3/14页5是非零时使用主体部分子编码器1。主体部分子编码器0或者主体部分子编码器1基于给出的数据生成和输出EXI位串。更具体地说,主体部分子编码器0或者主体部分子编码器1接收结构体作为输入,并且生成相当于XML内容的EXI位串,其中,在描述主体部分的成员名处描述结构体成员的值。 0032 每当由主体部分编码器B处理输入数据时,控制单元11也递增主体部分。
15、计数器12的值。 0033 当主体部分编码器B已经处理了所有的输入数据时,控制单元11调用尾部分编码器T。当主体部分计数器12是零时(即,当还没有输入数据或结构体时)尾部分编码器T使用尾部分子编码器0,并且当主体部分计数器12是非零时使用尾部分子编码器1。尾部分子编码器0或1输出针对预先提供的尾部分的EXI位串。即,尾部分编码器T以EXI格式生成元素以关闭流(相当于尾部分的XML内容)。 0034 输出单元13将来自头部分编码器H、编码器B(主体部分子编码器0和1)和尾部分编码器T(尾部分子编码器0或1)的EXI位串组装成EXI流并且输出该流。 0035 图2示意地示出了输出的EXI流的例示性。
16、结构。图2的示例表示给出三个结构体(结构体1到3)的情况。图3示意地示出没有给出结构体的EXI流(即,尾部分接着头部分)的例示性结构。 0036 尽管本实施例通过仅提供输入结构体而没有给出XML文档生成了EXI流,但是为了理解,下面描述从XML文档到EXI格式的转换。 0037 从XML文档到EXI格式的转换基于从XML模式(Schema-informed Grammar1Section 8.5)生成的EXI语法。EXI语法及用它生成的EXI流具有如下所示的特征。众所周知,XML模式定义了XML文档的结构。EXI语法是通过已知的方法从EXI模式生成的。 0038 1.以事件的形式从XML文档的。
17、开头表示XML文档,例如“元素”(例如,SE和EE)、“属性”(AT)和“特性”(CH)(例如,SAX事件中的表示)。 0039 2.EXI语法具有基于由XML模式允许的状态转换的次数的语法和被按顺序分配给状态转换的事件编码。 0040 3.用能够表示状态转换的次数的最小位宽的整数来表示事件(取决于选择)。 0041 由于第二个和第三个特征,正常沟通是困难的,除非发送设备(具有EXI编码器的设备)和接收EXI流的设备具有相同的EXI语法。在接收设备上跳过在通常的XML处理中普遍的未知标签也是困难的。 0042 另外,在如下所示的这样的情况中,即使针对表面上相同的表示,状态转换和因此的输出位串也。
18、会变化。 0043 1.可选的XML属性 0044 当有可能或者可能不存在的属性X时,对于紧接该属性之前的状态,存在导致属性X的发生的转换并且导致下一个属性或者节点的发生的转换。换言之,在属性Y在可选的属性X之后的语法中,当属性X存在时针对属性Y的事件编码和当属性X不存在时针对属性Y的事件编码能够是不同的。 0045 2.minOccur0的节点 0046 对于上面所描述的可选的XML属性的情况,当有可能不存在的节点时,针对在该节点之后的元素的事件编码能够变化。minOccur0的节点意味着它不是必须存在的。 说 明 书CN 102708106 A4/14页60047 3.maxOccur是2。
19、或者更大的节点 0048 即使对于具有相同内容的XML元素(节点P),用于从对应于前一个元素的语法转换到节点P的事件编码和从节点P到节点P转换的事件编码能够是不同的。maxOccur是2或者更大的节点意味着节点能够被重复那些次(例如,对应于本实施例的主体部分的次数)。 0049 在本实施例中处理的XML文档具有一个头部分、零个或更多主体部分以及一个尾部分。 0050 对于头、主体和尾部分中的每一个,能够取决于输入数据来确定子元素和属性是否存在。 0051 根据本实施例的EXI编码器预先为EXI语法之间所有的状态转换保留 包括事件编码的位串(或者二进制串),对于所述状态转换,事件编码能够取决于输。
20、入的数量和输入是否存在而变化。因此,通过根据数据是否存在、布尔值和作为输入的数据项的数量来选择位串,能够容易地创建能够被正确地解码的EXI流。 0052 将用具体的示例来描述这一点。 0053 示例A.1示出针对假想的XML文档的例示模板。 0054 该文档符合示例A.5中所示的模式,并且示例A.6中所示的EXI语法是从该模式中衍生的。从参考文献1(John Schneider and Takuki Kamiya,Efficient XML Interchange(EXI)Format 1.0.W3C Candidate Recommendation,December 2009,http:/w。
21、ww.w3.org/TR/exi/)引用模式示例。示例A.6中所示的EXI语法也是从参考文献1中引用的。 0055 EXI语法示出了针对“order”的语法(“针对元素的完整语法” )和针对“product”的语法(“针对元素的完整语法” )。在每个语法中,定义了更详细的语法。在针对的语法中的“Term-product 0,0”和“Term_product 0,1”以及在针对的语法中的“User_color0”是语法的名称。EXI语法包括四个部分:LeftHandSide、Terminal、NonTerminal和EventCode。当“Terminal”事件在LeftHandSide状态下发。
22、生时,输出EventCode和发生于向NonTerminal状态的转换。 0056 假设由“/order/product”标签(Xpath记法)指示的区域表示主体部分(重复的部分),如示例A.2中所示布置头、主体和尾部分。具体地说,当输出表A.3所示的三个结构体(一行对应于一个结构体并且结构体的每个元素表示成员(变量)时,预计要输出的假想的XML文档,即,对应于EXI流的XML文档,如示例A.4中所示。 0057 以下在本实施例中,任意长度的比特以0b开头并且用0和1的串表示。当用引号()来指示任意的字符串时,这意味着它是用在XML中处理的格式UTF-8来表示的字节序列。 0058 根据本实施。
23、例的编码处理从头部分编码器H开始。 0059 在初始化时,主体部分编码器12被初始化为零。头部分编码器H除了EXI头部(一般两字节)以外还包括对应于示例A.2.1的EXI位串。头部分编码器H响应于来自控制单元11的调用输出所包括的EXI位串。 0060 将示例A.3中所示的一行作为一单元提供给主体部分编码器B以作为输入,并且主体部分编码器B输出EXI位串。将用于第一行的数据(一结构体)提供给主体部分子编说 明 书CN 102708106 A5/14页7码器0。主体部分子编码器0输出0b0并且进一步输出主体部分的内容的编码的结果(即,表示主体的XML内容的EXI位串,在该XML内容中,用第一行数。
24、据替换结构体的成员名称)。 0061 将用于第二行的数据提供给主体部分子编码器1并且继续。当提供第二或之后的数据时,它针对每块数据输出0b00,并且然后输出主体部分内容的编码结果。 0062 首先针对第一行数据输出0b0并针对第二行和之后的行的数据输出0b00的原因是,当主体部分计数器12是零时应用语法Term_product 0,0,而当主体部分计数器12是非零时应用语法Term_product 1,0。 0063 下面更详细地描述主体部分子编码器0。 0064 主体部分以“product”标签开始。换言之,它以SE(“product”)为开始,并且因为语法的第一层有两个状态,0和1,(即,。
25、可以用一比特表示),所以主体部分子编码器0输出0b0。此后,它输出对应于所提供的数据(结构体)的位串。控制单元11使主体部分计数器12递增。 0065 第一层指的是在EXI语法中事件编码中最左边的数字。例如,对于语法Term_product 0,0,存在如下所示的八个事件编码: 0066 0 0067 1.0 0068 1.1 0069 1.2 0070 1.3 0071 1.4.0 0072 1.5 0073 1.6 0074 最左边的数字仅是0或者1(即,两种类型),所以第一层的状态可以用一比特来表示。 0075 同样对于语法Term_product 1,0,存在如下所示的四个事件编码: 。
26、0076 0 0077 1 0078 2.0 0079 2.1 0080 最左边的数字是0、1或2(即,三种类型),所以,第一层的状态可以用两比特来表示。 0081 当用结构体作为参数第二次调用控制单元11时,因为主体部分计数器12是非零,所以它调用语法Term_product 1,0所对应的主体部分子编码器1。即,Term_product 0,0指定针对SE(“product”)输出事件编码0以引起向Term_product 1,0的转换。 0082 此时,因为对于如上所述的第一层的语法存在三种类型的编码:0、1、2和3,所述事先已知需要输出两比特事件编码。在同样的SE(“product”)。
27、被输出的情况下,主体部分子编码器1输出0b00(即,事件编码“0”的两比特表示)。然后,它正如主体部分子编码器0一样,根据所给出的输入数据输出位串。控制单元11使主体部分计数器12递增。 0083 当用结构体作为参数第三次调用控制单元11时,因为Term_product 1,0被重复,说 明 书CN 102708106 A6/14页8所以与第二次调用时一样的过程发生。即,Term_product 1,0指定输出的事件编码0,然后对于SE(“product”)发生再次向同样的Term_product1,0的转换。 0084 最后,尾部分编码器T以“order”标签结束。 0085 当有零个主体部。
28、分时尾部分子编码器0运行,输出针对Term_product0,0的EE(1.0),即,0b1000,其是一比特1长度和三比特长度0s的串联。换言之,因为“1,0”中的“0”对应于第二层并且在第二层中有七种编码:0、1、2、3、4、5和6,所以第二层需要三比特来用于表示。 0086 即使当主体部分发生一次时,向Term_product 1,0的转换也会发生并且将再也不会返回到Term_product 0,0。当有一个或更多主体部分时,尾部分子编码器1运行,输出针对Term_product 1,0的EE(1),即,0b01,其是两比特长度1。 0087 下面示出如何对主体部分的内容编码,即,如何生。
29、成表示XML文档的EXI位串,在该XML文档中,用输入数据替换主体部分中的结构体的成员名称(或者可变内容)。 0088 本实施例中使用的语法期望按照“color”属性、“sku”属性、“quantity”元素和“price”元素的顺序构成流(见示例A.1和A.2)。 0089 虽然没有在本实施例中使用,但是“description”元素可以存在。 0090 在本实施例中,主体部分的构成是固定的并且除了“SKU”、“COLOR”、“QUANTITY”和“PRICE”四个部分以外不会改变。因此,预先用通用的EXI编码方法创建描述主体部分的结构的位串,并且仅变化的部分能够被输入数据替换。 0091 。
30、在主体部分中,保留对应于下面五个部分的EXI编码的位串。 0092 1.从“product”标签的开始到紧接对“sku”属性的内容描述之前(相当于“”) 0095 4.从紧接对“quantity”元素的内容描述之后到紧接对“price”元素的内容描述之前(相当于“”),以及 0096 5.从紧接对“price”元素的内容描述之后到“order”标签的结束(相当于“”)。 0097 将作为输入提供的用于变量(即,成员)的位串插入到这些位串之间,产生位串,该位串相当于其中用EXI语法来描述反映输入数据的主体部分的位串。在图4中示意地示出了针对主体部分的EXI位串的例示构成。 0098 图5是示出E。
31、XI编码器操作流程的流程图。 0099 在编码器被激活之后,控制单元11向头部分编码器H发送输出指令,然后头部分编码器H将包括在编码器H中的EXI位串(即,通过转换头部分的XML内容而生成的EXI位串)发送到输出单元13(S101)。 0100 控制单元11尝试从外面读取用于结构体的数据(多个变量)。如果数据存在(在S102处是),它将所读取的数据传送给主体部分子编码器0。主体部分子编码器0基于所接收的数据生成EXI位串并将该EXI位串发送到输出单元13(S103)。控制单元11然后递增说 明 书CN 102708106 A7/14页9主体部分计数器12。 0101 控制单元11再一次尝试读取。
32、数据。如果第二个或更多的数据存在(在 S104处是),则控制单元11将数据发送到主体部分子编码器1。主体部分子编码器1基于该数据生成EXI位串并将它发送到接收的输出单元13(S105)。当没有更多的输入数据(在S104处否)时,控制单元11向尾部分子编码器1发布输出指令。尾部分子编码器1将包括在尾部分子编码器1中的位串(通过转换尾部分的XML内容而生成的对应于Term_product 1,0的EXI位串)发送到输出单元13(S106)。 0102 如果在步骤S102处,在数据读取中没有数据(在S102处为否),则控制单元11向尾部分子编码器0发送输出指令。尾部分子编码器0输出包括在尾部分子编码。
33、器0中的位串(通过转换尾部分的XML内容而生成的对应于Term_product 0,0的EXI位串)(S107)。 0103 输出单元13将从头部分编码器H、主体部分子编码器0和1、尾部分编码器0或1接收的EXI位串按照它们被接收的顺序布置到EXI流中,并将该EXI流输出到接收设备(S108)。 0104 上面所描述的方法使得能够基于XML模式而不需要使用XML文档作为输入来生成反映输入数据(输入结构体)的EXI流。 0105 如上面所描述的,根据本实施例,可以针对由特定的XML模式给出的EXI语法实施专门的和高效的编码。特别是对于处理仅使用XML模式中允许的数据描述的部分自由度的类型而言,可。
34、以比使用XML作为输入的传统编码器更高效地执行编码。尽管为了简单本实施例被限于头/主体/尾格式,但是随着对常量和变量部分的组合的原理的自然扩展和基于结构体被重复的次数而对常量的改变,嵌套构成或者包括两个或更多类型的主体部分也是可能的。 0106 通过使用例如通用的计算机设备作为基础硬件,也可以实现根据上述实施例的EXI编码器。即,通过包括在计算机设备中的处理器执行程序,可以实现EXI编码器的控制单元、主体部分计数器、头部分编码器、主体部分编码器和尾部分编码器。 0107 在这种情况下,可以通过预先将程序安装在计算机设备中,或者通过分发存储在诸如CD-ROM等的存储介质上的程序,或者通过网络分发。
35、,并且适当地将程序安装在计算机设备里来实现EXI编码器。 0108 A.样本数据 0109 A.1假想的XML文档的示例模板 0110 说 明 书CN 102708106 A8/14页100111 A.2.假想的XML文档的模板的示例分割 0112 A.2.1头部分 0113 0114 0115 A.2.2.主体部分 0116 0117 QUANTITY 0118 PRICE 0119 0120 A.2.3.结尾(END)部分 0121 0122 A.3.对编码器的输入 0123 SKU COLOR QUANTITY PRICE 1JB339 白 40 339.50 输入结构体11JB340 黑 25 155.0 输入结构体21JB341 绿 30 183.95 输入结构体30124 A.4.假想的XML文档的具体的示例 0125 说 明 书CN 102708106 A10。