XML基础上的多媒体数据技术研究
2011-05-14张彦军
张彦军
(暨南大学,广东 广州 510610)
采用XML格式来描述EPG(Electronical Program Guide)的数据理由有:(1)标准问题。XML是描述结构化数据的一个非常好的标准。(2)扩展性。由于EPG数据类型随着广播电视的发展必然会有新的数据类型出现,而XML非常有利于未来扩展向后兼容。(3)随着XML技术的不断发展成熟,关于XML技术的相关开发工具日益丰富,为以后从事EPG相关开发及功能扩展提供了便利。
为此,引出本文所涉及的一般数据转换为XML格式数据的问题,这里的一般数据指无结构数据或关系数据库中的结构数据。在研究了已有的数据转换模式的基础上,本文提出了一种基于Schema模式的将一般数据转换为XML文档的方法。
1 DMB EPG系统
数字多媒体广播 DMB(DigitalMultimedia Broadcasting)是 在 DAB(Digital Audio Broadcasting)基 础 上发展起来的,DMB充分地利用了DAB能在高速移动环境下可靠接收信号的技术优势,在功能上将原来传输单一的音频信息扩展为数据、文字、图形与视频等多种载体,即多媒体对象传输MOT(MultimediaObject Transmitting)。DMB将数字化了的音频、视频信号及各种数据业务信号,在数字状态下进行压缩、编码、调制、传输等处理,可实现高质量传输、很高的功率效率和频谱效率,同时兼具多媒体特性,提供容量大、效率高、可靠性强的数据信息传送。从DAB到DMB,意味着从数字音频广播到数字多媒体广播的跨越,使任何数字信息都可以用一个数字化的平台系统来传递,其系统可以为用户提供包括音频、视频在内的综合视听信息服务和娱乐享受[1]。
电子节目指南EPG用来提供包括音频和数据业务在内的节目列表信息,也是一种用户选择业务、节目及其相关内容的机制。DMB EPG系统可以分为前端系统和后端系统,前端系统就是通过广电网络发送EPG信息的发送端,后端系统指接收EPG信息的接收终端,主要是移动手机。EPG系统的关键是数据格式规范,通过规范化的数据格式协议,使所有不同种类支持该协议的接收终端都能正确接收并展示信息。
2 DMB EPG系统的数据规范解析
DMB EPG系统的数据规范也就是其定义的数据类型的结构规范,它有一套专门的标准,全称是Digital Audio Broadcasting XML Specification for DAB Electronical Programme Guide[2], 它 是 ETSI(European Telecommunications Standard Institute)的技术规范。由于DMB是在DAB的基础上发展起来的,所以其EPG标准目前仍采用DAB EPG数据规范,文中的DMB EPG也可称为DAB EPG。
DMB EPG的数据可以分为3个主要组成部分,分别是业务数据 (Service Information)、节目数据(Schedule Information)和节目的分组信息(Group Information)。一个Service Information下可以有多个ensemble,一个 ensemble下可以有多个在其上播送的Service。一个Schedule information下面可以有多个节目表Schedule(描述一个或多个Service下的节目信息),一个Schedule描述多个节目,每个节目又可以包含多个节目事件 (Event)。一个Group Information包含多个Group,一个Group下又可以出现多个Group,而且可以出现多层Group。这更像一个网状结构,每个Group子节点可以隶属于多个Group父节点,最底层的节点是节目Programme。
EPG的数据是以XML文件格式存放的,它的数据结构采用XML Schema格式定义,EPG的XML文档模式主要有 3 个:Common data types:epgDataTypes_11.xsd,Schedules:epgSchedule_11.xsd,Service Information:epgSI_11.xsd。
3 一般数据转换为XML 文档的方法
3.1 基于模板的数据转换方法
基于模板的转换方法并非事先定义好XML文档与其他文档之间的映射关系,而是在XML文档中嵌入一些可执行的命令。这些指令在转换过程中被系统识别和执行,执行的结果被替换到指令所在的位置,从而生成目标XML文档。基于模版的数据转换方法的架构图如图1所示。以关系数据库数据为例,为了从数据库中获取节目信息,并将节目信息用XML文档表示出来,可以定义以下的一个模板:
如果生成XML文档时,系统扫描这个模板,当遇到
图1 基于模板的数据转换方法架构图
3.2 基于模型的数据转换方法
基于模型的数据转换方法用事先定义好的数据模型来映射XML文档结构与其他格式数据的结构之间的关系。以数据库为例,一个最为简单的模型就是将文档结构定义为如下的模型:
把数据库数据转换成XML文档时,只要把一个表或一个查询结果的数据插入到相应位置即可;而把XML文档数据转换成数据库数据时,只要把内容插入到相应的表中即可。另一种常用的模型是将XML文档的结构定义为一棵数据对象树,根据规则将文档的层次结构转换为树状结构 (通常是把文档中的元素定义为树的节点)。这种模型对于XML文档与面向对象数据库和层次数据库之间的转换是非常方便的。当与关系数据库进行转换时,可以利用传统的 “对象-关系”映射技术来实现。图2为基于模型的转换方法的架构图。
图2 基于模型的数据转换方法架构图
3.3 基于Schema模式的数据转换方法
基于模板的转换方法的好处在于转换的步骤比较简单,只要给出模板,就可以快速地生成相应的XML文档,如图2所示。不足之处在于,它只适合将其他类型的数据转换为XML文档,对于反向的转换就无能为力了。此外,基于模板的转换方法关键是要生成大量合理的模板,为此,系统需要为用户提供一套生成模板的工具以及相应的指令执行程序。对于数据库数据,可以借用数据库管理系统方便地生成指令执行程序;而文本数据和OCR数据指令执行程序的编写则需要大量的工作[3]。
基于模型的转换方法由于有数据模型的支持,转换工作相对比较简单,并且可以完成XML数据与其他格式数据之间的双向转换。但是模型的引入使得XML文档的结构受到了一些限制,即一个XML文档必须符合模型所规定的结构,才能将XML文档转换成其他类型的数据,而从其他类型数据转换得到的XML文档也具有某种结构特点。所以,基于模型的转换方法的关键是设计一个灵活的映射模型,使得对XML文档结构的限制尽量地少[3]。
由于DMBEPG的XML规范是基于Schema模式的,为此,本文在已有的数据转换模式的基础上[3-5],提出一种基于Schema模式的数据转换方法,它本质上也是一种基于模型的数据转换方法,只是其文档结构是根据Schema模式文件来确定的。基于Schema模式的数据转换方法的过程如下:
(1)首先根据Schema模式文件生成一棵元素节点树,树的每个节点对应Schema模式文件中每一个元素,树的根节点对应模式文件的根元素,每个节点的结构包含属性集、子元素集以及节点值CDATA,这三部分都可能为空。每个属性包含属性名、属性类型、属性值,其中,Schema模式文件定义了属性名和属性类型。每个子元素的结构都由模式文件定义,其中每个子节点的出现次数也都由Schema模式文件定义。复杂数据类型的节点一般不存在CDATA部分。
(2)利用 Schema解析工具(如开源的 xmlBeans)生成的原始的、模糊的元素节点树,之所以称为原始模糊树,是因为树的具体结构还没有确定,只是一个树的模糊框架。主要由以下几个方面构成其不确定性:
①元素出现的次数引起的不确定性。例如,规定出现0次或1次,那么该元素是否出现则在后面的数据插入转换过程中确定。
②几个元素只能有一个出现,也就是Schema中Choice选项,最终哪个元素出现也由后面的数据插入转换过程中确定。
(3)数据映射。数据的转换必须要有相应的数据源,这就要确定XML文档的元素节点与数据源之间的映射关系。
①对于非结构化的数据,需要建立一个相应的数据源数据与树节点的映射表。
②对于结构化的数据源,如关系数据库,可以建立如下的数据映射关系:
一棵元素节点树就是一个Schema所包含的元素之间的关系树,它的构成如下:
·元素树的每一个节点对应Schema中的一个元素。
·每个节点包含以下主要信息:属性列表、子元素列表和其他信息。
·属性列表包含了该元素的所有属性,每个属性是一个三元组(属性名、属性值、属性类型)。
·子元素列表包含了该元素的所有子元素,每个子元素对应一个新的节点。
·除了表节点和内容模式节点以外的节点称为字段节点,它只对应父节点所对应的表中的一个字段。
·内容模式节点不对应数据库中的任何对象。
在实际应用中,数据库的相应表结构正是根据Schema模式文件来设计的。这也就建立了相应的映射关系,在数据转换过程中,只要找到数据库数据表与树节点的映射关系即可。
(4)数据转换,XML文档树生成。前面已经提过,最初的元素节点树是原始的模糊树,而最终的数据转换过程正是XML文档树的生成确定过程。数据转换在基于前面原始模糊树的基础上,根据映射关系表找到每个节点对应的数据库中的数据表,并通过查询获取数据。然后将该节点的相应属性赋值,并确定子节点及每个子节点出现的次数。
基于Schema模式的数据转换方法的框架如图3所示。
图3 基于Schema模式的数据转换架构图
4 基于Schema模式的EPG XML文档转换实现
DMB EPG系统需要生成三类XML文档,分别表示业务信息SI、节目信息PI以及组信息GI。规范这三类信息的Schema模式文件共有三个,分别是epgSchedule_11.xsd、ServiceInformation_11.xsd和 epgDataTypes.xsd。 其 中,epgSchedule_11.xsd规范了 PI和 GI的树结构,ServiceInformation_11.xsd规范了 SI的树结构,而epgDataTypes.xsd定义了一些基本的数据类型。下面以生成SI的一个XML文档为例,描述业务信息的XML文档的转换过程。
首先,利用 XML Schema解析工具(如XMLBeans等)解析Schema模式文件ServiceInformation_11.xsd,得到一棵业务信息SI的XML文档框架树。根据这棵生成Schema模式树,建立如下的数据库表结构,建立表的过程的同时确定模式树与数据库数据的映射关系。图4中的每个表对应元素节点树的每个复杂节点,表中每个除了主键及部分用来关联的外键外的字段对应该节点的属性或简单类型子节点外,在建立数据库表的过程中,重点解决以下几个问题:
(1)一种类型的节点可能有多种类型的父节点,如Link类型的父节点有 ensemble、service、CA等类型,则在对应的数据库表table_link中增加一个belongtoType字段标识对应的父节点的类型,增加fKey字段作为外键关联其父节点的主键。
(2)一个复杂类型节点A的某个子节点B可能存在或不存在,如果该子节点B是简单类型,则用一个字段标识,该字段可为空,如果记录值为空,则说明对应文档树该节点不存在;如果该子节点B是复杂类型,则在数据库对应表中增加一个字段表示该子节点是否存在。并创建子节点对应的子表,子表中设置外键关联节点A对应得父表的主键。
图4 SI的部分数据库表
在完成数据库表与模式树节点的映射后,便可以访问数据库记录,逐层确定各层节点的出现次数,将模糊树的框架变清晰;同时根据树节点与关系数据库表的映射,查询对应的数据库表获得数据,并用数据给对应树节点属性或CDATA赋值。文档转换如下:
(1)由于协议规定一个SI XML文档只描述一个ensemble的业务信息,所以该框架树的ensemble节点仅出现一次。每个ensemble有个ensembleKey主键,根据ensembleKey查询ensemble表。关系数据向XML文档的转换过程是按照XML模式树的层序进行的,即从顶层根节点到底层的顺序层序遍历。
(2)对于复杂类型Type1节点N1,根据主键Key1查询对应的表T1,将查询到的记录L1的字段值赋值给模式树对应节点N1的相关属性和简单类型子节点,这里一个主键Key对应唯一一条记录L。然后依次查询该表对应的一系列子表的外键。如查询子表T2对应节点类型Type2,则表T2外键值等于父表T1主键Key1的记录L2(集合)的个数对应节点N1的Type2类型子节点出现的个数,然后记录下记录集每条记录的主键。
(3)循环执行步骤(2),直到所有的模式树节点对应的数据库表记录均赋值给节点属性和简单类型子节点或CDATA部分。便完成了关系数据库数据向XML文档的转换。
在总结了一般无结构数据或关系数据转换为XML文档的EPG数据转换技术的基础上,针对EPG数据规范提出了一种基于Schema模式的XML数据转换技术。由于转换后的XML文件根据协议需要分级成两个XML文件,所以今后的研究就是提出一种合理的EPG XML文档分级重构方案。
[1]许晓鹤.手机电视三大技术之争,中国市场该怎样走?http://www.dvbcn.com/zhuanti/sjdsdfpl/11_01_22_61.html,2011-14.
[2]ETSI TS 102 818(2005-01)XML Specification for DAB EPG.http://www.worlddab.org/irc.aspx?sub=10,2011-04-06.
[3]罗思群.基于XML技术的数据转换[M].北京:中国科学院软件研究所,2001:22-29.
[4]王海波,耿晖,姜吉发,等.基于 XML的数据交换的实现[J].计算机应用,2001,21(4):1-2.
[5]王胜清,何丁山,李晓明,等.一个从关系数据模型到XML文档的翻译器设计 [J].计算机应用,2001,21(7):1-4.