摘 要: 數(shù)據(jù)的轉換與傳輸技術是DMB EPG前端系統(tǒng)的核心技術。通過深入研究DMB EPG的協(xié)議、技術背景和工作原理,探討了DMB EPG前端系統(tǒng)的數(shù)據(jù)轉換技術,并設計實現(xiàn)了基于XML的DMB EPG數(shù)據(jù)轉換技術,即提出了一種基于Schema模式的數(shù)據(jù)轉換方法。
關鍵詞: 數(shù)字多媒體廣播;電子節(jié)目指南;多媒體對象傳輸
采用XML格式來描述EPG(Electronical Program Guide)的數(shù)據(jù)理由有:(1)標準問題。XML是描述結構化數(shù)據(jù)的一個非常好的標準。(2)擴展性。由于EPG數(shù)據(jù)類型隨著廣播電視的發(fā)展必然會有新的數(shù)據(jù)類型出現(xiàn),而XML非常有利于未來擴展向后兼容。(3)隨著XML技術的不斷發(fā)展成熟,關于XML技術的相關開發(fā)工具日益豐富,為以后從事EPG相關開發(fā)及功能擴展提供了便利。
為此,引出本文所涉及的一般數(shù)據(jù)轉換為XML格式數(shù)據(jù)的問題,這里的一般數(shù)據(jù)指無結構數(shù)據(jù)或關系數(shù)據(jù)庫中的結構數(shù)據(jù)。在研究了已有的數(shù)據(jù)轉換模式的基礎上,本文提出了一種基于Schema模式的將一般數(shù)據(jù)轉換為XML文檔的方法。
1 DMB EPG系統(tǒng)
數(shù)字多媒體廣播DMB(Digital Multimedia Broadcasting)是在DAB(Digital Audio Broadcasting)基礎上發(fā)展起來的,DMB充分地利用了DAB能在高速移動環(huán)境下可靠接收信號的技術優(yōu)勢,在功能上將原來傳輸單一的音頻信息擴展為數(shù)據(jù)、文字、圖形與視頻等多種載體,即多媒體對象傳輸MOT(Multimedia Object Transmitting)。DMB將數(shù)字化了的音頻、視頻信號及各種數(shù)據(jù)業(yè)務信號,在數(shù)字狀態(tài)下進行壓縮、編碼、調制、傳輸?shù)忍幚?,可實現(xiàn)高質量傳輸、很高的功率效率和頻譜效率,同時兼具多媒體特性,提供容量大、效率高、可靠性強的數(shù)據(jù)信息傳送。從DAB到DMB,意味著從數(shù)字音頻廣播到數(shù)字多媒體廣播的跨越,使任何數(shù)字信息都可以用一個數(shù)字化的平臺系統(tǒng)來傳遞,其系統(tǒng)可以為用戶提供包括音頻、視頻在內的綜合視聽信息服務和娛樂享受[1]。
電子節(jié)目指南EPG用來提供包括音頻和數(shù)據(jù)業(yè)務在內的節(jié)目列表信息,也是一種用戶選擇業(yè)務、節(jié)目及其相關內容的機制。DMB EPG系統(tǒng)可以分為前端系統(tǒng)和后端系統(tǒng),前端系統(tǒng)就是通過廣電網(wǎng)絡發(fā)送EPG信息的發(fā)送端,后端系統(tǒng)指接收EPG信息的接收終端,主要是移動手機。EPG系統(tǒng)的關鍵是數(shù)據(jù)格式規(guī)范,通過規(guī)范化的數(shù)據(jù)格式協(xié)議,使所有不同種類支持該協(xié)議的接收終端都能正確接收并展示信息。
2 DMB EPG系統(tǒng)的數(shù)據(jù)規(guī)范解析
DMB EPG系統(tǒng)的數(shù)據(jù)規(guī)范也就是其定義的數(shù)據(jù)類型的結構規(guī)范,它有一套專門的標準,全稱是Digital Audio Broadcasting XML Specification for DAB Electronical Programme Guide[2],它是ETSI(European Telecommunications Standard Institute)的技術規(guī)范。由于DMB是在DAB的基礎上發(fā)展起來的,所以其EPG標準目前仍采用DAB EPG數(shù)據(jù)規(guī)范,文中的DMB EPG也可稱為DAB EPG。
DMB EPG的數(shù)據(jù)可以分為3個主要組成部分,分別是業(yè)務數(shù)據(jù)(Service Information)、節(jié)目數(shù)據(jù)(Schedule Information)和節(jié)目的分組信息(Group Information)。一個Service Information下可以有多個ensemble,一個ensemble下可以有多個在其上播送的Service。一個Schedule information下面可以有多個節(jié)目表Schedule(描述一個或多個Service下的節(jié)目信息),一個Schedule描述多個節(jié)目,每個節(jié)目又可以包含多個節(jié)目事件(Event)。一個Group Information包含多個Group,一個Group下又可以出現(xiàn)多個Group,而且可以出現(xiàn)多層Group。這更像一個網(wǎng)狀結構,每個Group子節(jié)點可以隸屬于多個Group父節(jié)點,最底層的節(jié)點是節(jié)目Programme。
EPG的數(shù)據(jù)是以XML文件格式存放的,它的數(shù)據(jù)結構采用XML Schema格式定義,EPG的XML文檔模式主要有3個:Common data types:epgDataTypes_11.xsd,Schedules:epgSchedule_11.xsd,Service Information:epgSI_11.xsd。
3 一般數(shù)據(jù)轉換為XML文檔的方法
3.1 基于模板的數(shù)據(jù)轉換方法
基于模板的轉換方法并非事先定義好XML文檔與其他文檔之間的映射關系,而是在XML文檔中嵌入一些可執(zhí)行的命令。這些指令在轉換過程中被系統(tǒng)識別和執(zhí)行,執(zhí)行的結果被替換到指令所在的位置,從而生成目標XML文檔?;谀0娴臄?shù)據(jù)轉換方法的架構圖如圖1所示。以關系數(shù)據(jù)庫數(shù)據(jù)為例,為了從數(shù)據(jù)庫中獲取節(jié)目信息,并將節(jié)目信息用XML文檔表示出來,可以定義以下的一個模板:
<? xml version=”1.0”>
<ProgrammeGroup>
<Programme>
<SelectStmt>
SELECT shortName,mediumName,longName,KeyWords From Programme
</ SelectStmt >
</Programme>
<ProgrammeGroup>
如果生成XML文檔時,系統(tǒng)掃描這個模板,當遇到<SelectStmt>指令的時候,系統(tǒng)識別出這是一個可執(zhí)行指令,于是調用指令執(zhí)行程序執(zhí)行該指令。指令執(zhí)行后的結果為:
<?xml version=”1.0”>
<ProgrammeGroup>
<Programme>
<shortName>Apple Pie</shortName>
<mediumName>Apple Pie version 2</mediumName>
<longName>Apple Pie version 2 From America</ longName>
<Keywords> Apple</Keywords>
</Programme>
</ProgrammeGroup>
3.2 基于模型的數(shù)據(jù)轉換方法
基于模型的數(shù)據(jù)轉換方法用事先定義好的數(shù)據(jù)模型來映射XML文檔結構與其他格式數(shù)據(jù)的結構之間的關系。以數(shù)據(jù)庫為例,一個最為簡單的模型就是將文檔結構定義為如下的模型:
<database>
<table>
<row>
<columnl>...</columnl>
<column2>...<lcolumn2>
</table>
</database>
把數(shù)據(jù)庫數(shù)據(jù)轉換成XML文檔時,只要把一個表或一個查詢結果的數(shù)據(jù)插入到相應位置即可;而把XML文檔數(shù)據(jù)轉換成數(shù)據(jù)庫數(shù)據(jù)時,只要把內容插入到相應的表中即可。另一種常用的模型是將XML文檔的結構定義為一棵數(shù)據(jù)對象樹,根據(jù)規(guī)則將文檔的層次結構轉換為樹狀結構(通常是把文檔中的元素定義為樹的節(jié)點)。這種模型對于XML文檔與面向對象數(shù)據(jù)庫和層次數(shù)據(jù)庫之間的轉換是非常方便的。當與關系數(shù)據(jù)庫進行轉換時,可以利用傳統(tǒng)的“對象-關系”映射技術來實現(xiàn)。圖2為基于模型的轉換方法的架構圖。
3.3 基于Schema模式的數(shù)據(jù)轉換方法
基于模板的轉換方法的好處在于轉換的步驟比較簡單,只要給出模板,就可以快速地生成相應的XML文檔,如圖2所示。不足之處在于,它只適合將其他類型的數(shù)據(jù)轉換為XML文檔,對于反向的轉換就無能為力了。此外,基于模板的轉換方法關鍵是要生成大量合理的模板,為此,系統(tǒng)需要為用戶提供一套生成模板的工具以及相應的指令執(zhí)行程序。對于數(shù)據(jù)庫數(shù)據(jù),可以借用數(shù)據(jù)庫管理系統(tǒng)方便地生成指令執(zhí)行程序;而文本數(shù)據(jù)和OCR數(shù)據(jù)指令執(zhí)行程序的編寫則需要大量的工作[3]。
基于模型的轉換方法由于有數(shù)據(jù)模型的支持,轉換工作相對比較簡單,并且可以完成XML數(shù)據(jù)與其他格式數(shù)據(jù)之間的雙向轉換。但是模型的引入使得XML文檔的結構受到了一些限制,即一個XML文檔必須符合模型所規(guī)定的結構,才能將XML文檔轉換成其他類型的數(shù)據(jù),而從其他類型數(shù)據(jù)轉換得到的XML文檔也具有某種結構特點。所以,基于模型的轉換方法的關鍵是設計一個靈活的映射模型,使得對XML文檔結構的限制盡量地少[3]。
由于DMB EPG的XML規(guī)范是基于Schema模式的,為此,本文在已有的數(shù)據(jù)轉換模式的基礎上[3-5],提出一種基于Schema模式的數(shù)據(jù)轉換方法,它本質上也是一種基于模型的數(shù)據(jù)轉換方法,只是其文檔結構是根據(jù)Schema模式文件來確定的。基于Schema模式的數(shù)據(jù)轉換方法的過程如下:
(1)首先根據(jù)Schema模式文件生成一棵元素節(jié)點樹,樹的每個節(jié)點對應Schema模式文件中每一個元素,樹的根節(jié)點對應模式文件的根元素,每個節(jié)點的結構包含屬性集、子元素集以及節(jié)點值CDATA,這三部分都可能為空。每個屬性包含屬性名、屬性類型、屬性值,其中,Schema模式文件定義了屬性名和屬性類型。每個子元素的結構都由模式文件定義,其中每個子節(jié)點的出現(xiàn)次數(shù)也都由Schema模式文件定義。復雜數(shù)據(jù)類型的節(jié)點一般不存在CDATA部分。
(2)利用Schema解析工具(如開源的xmlBeans)生成的原始的、模糊的元素節(jié)點樹,之所以稱為原始模糊樹,是因為樹的具體結構還沒有確定,只是一個樹的模糊框架。主要由以下幾個方面構成其不確定性:
?、僭爻霈F(xiàn)的次數(shù)引起的不確定性。例如,規(guī)定出現(xiàn)0次或1次,那么該元素是否出現(xiàn)則在后面的數(shù)據(jù)插入轉換過程中確定。
?、趲讉€元素只能有一個出現(xiàn),也就是Schema中Choice選項,最終哪個元素出現(xiàn)也由后面的數(shù)據(jù)插入轉換過程中確定。
(3)數(shù)據(jù)映射。數(shù)據(jù)的轉換必須要有相應的數(shù)據(jù)源,這就要確定XML文檔的元素節(jié)點與數(shù)據(jù)源之間的映射關系。
?、賹τ诜墙Y構化的數(shù)據(jù),需要建立一個相應的數(shù)據(jù)源數(shù)據(jù)與樹節(jié)點的映射表。
?、趯τ诮Y構化的數(shù)據(jù)源,如關系數(shù)據(jù)庫,可以建立如下的數(shù)據(jù)映射關系:
一棵元素節(jié)點樹就是一個Schema所包含的元素之間的關系樹,它的構成如下:
·元素樹的每一個節(jié)點對應Schema中的一個元素。
·每個節(jié)點包含以下主要信息:屬性列表、子元素列表和其他信息。
·屬性列表包含了該元素的所有屬性,每個屬性是一個三元組(屬性名、屬性值、屬性類型)。
·子元素列表包含了該元素的所有子元素,每個子元素對應一個新的節(jié)點。
·除了表節(jié)點和內容模式節(jié)點以外的節(jié)點稱為字段節(jié)點,它只對應父節(jié)點所對應的表中的一個字段。
·內容模式節(jié)點不對應數(shù)據(jù)庫中的任何對象。
在實際應用中,數(shù)據(jù)庫的相應表結構正是根據(jù)Schema模式文件來設計的。這也就建立了相應的映射關系,在數(shù)據(jù)轉換過程中,只要找到數(shù)據(jù)庫數(shù)據(jù)表與樹節(jié)點的映射關系即可。
(4)數(shù)據(jù)轉換,XML文檔樹生成。前面已經(jīng)提過,最初的元素節(jié)點樹是原始的模糊樹,而最終的數(shù)據(jù)轉換過程正是XML文檔樹的生成確定過程。數(shù)據(jù)轉換在基于前面原始模糊樹的基礎上,根據(jù)映射關系表找到每個節(jié)點對應的數(shù)據(jù)庫中的數(shù)據(jù)表,并通過查詢獲取數(shù)據(jù)。然后將該節(jié)點的相應屬性賦值,并確定子節(jié)點及每個子節(jié)點出現(xiàn)的次數(shù)。
基于Schema模式的數(shù)據(jù)轉換方法的框架如圖3所示。
4 基于Schema模式的EPG XML文檔轉換實現(xiàn)
DMB EPG 系統(tǒng)需要生成三類XML文檔,分別表示業(yè)務信息SI、節(jié)目信息PI以及組信息GI。規(guī)范這三類信息的Schema模式文件共有三個,分別是epgSchedule_11.xsd、ServiceInformation_11.xsd和epgDataTypes.xsd。其中,epgSchedule_11.xsd規(guī)范了PI和GI的樹結構,ServiceInformation_11.xsd規(guī)范了SI的樹結構,而epgDataTypes.xsd定義了一些基本的數(shù)據(jù)類型。下面以生成SI的一個XML文檔為例,描述業(yè)務信息的XML文檔的轉換過程。
首先,利用XML Schema解析工具(如XMLBeans等)解析Schema模式文件ServiceInformation_11.xsd,得到一棵業(yè)務信息SI的XML文檔框架樹。根據(jù)這棵生成Schema模式樹,建立如下的數(shù)據(jù)庫表結構,建立表的過程的同時確定模式樹與數(shù)據(jù)庫數(shù)據(jù)的映射關系。圖4中的每個表對應元素節(jié)點樹的每個復雜節(jié)點,表中每個除了主鍵及部分用來關聯(lián)的外鍵外的字段對應該節(jié)點的屬性或簡單類型子節(jié)點外,在建立數(shù)據(jù)庫表的過程中,重點解決以下幾個問題:
(1)一種類型的節(jié)點可能有多種類型的父節(jié)點,如Link類型的父節(jié)點有ensemble、service、CA等類型,則在對應的數(shù)據(jù)庫表table_link中增加一個belongtoType字段標識對應的父節(jié)點的類型,增加fKey字段作為外鍵關聯(lián)其父節(jié)點的主鍵。
(2)一個復雜類型節(jié)點A的某個子節(jié)點B可能存在或不存在,如果該子節(jié)點B是簡單類型,則用一個字段標識,該字段可為空,如果記錄值為空,則說明對應文檔樹該節(jié)點不存在;如果該子節(jié)點B是復雜類型,則在數(shù)據(jù)庫對應表中增加一個字段表示該子節(jié)點是否存在。并創(chuàng)建子節(jié)點對應的子表,子表中設置外鍵關聯(lián)節(jié)點A對應得父表的主鍵。
在完成數(shù)據(jù)庫表與模式樹節(jié)點的映射后,便可以訪問數(shù)據(jù)庫記錄,逐層確定各層節(jié)點的出現(xiàn)次數(shù),將模糊樹的框架變清晰;同時根據(jù)樹節(jié)點與關系數(shù)據(jù)庫表的映射,查詢對應的數(shù)據(jù)庫表獲得數(shù)據(jù),并用數(shù)據(jù)給對應樹節(jié)點屬性或CDATA賦值。文檔轉換如下:
(1)由于協(xié)議規(guī)定一個SI XML文檔只描述一個ensemble的業(yè)務信息,所以該框架樹的ensemble節(jié)點僅出現(xiàn)一次。每個ensemble有個ensembleKey主鍵,根據(jù)ensembleKey查詢ensemble表。關系數(shù)據(jù)向XML文檔的轉換過程是按照XML模式樹的層序進行的,即從頂層根節(jié)點到底層的順序層序遍歷。
(2)對于復雜類型Type1節(jié)點N1,根據(jù)主鍵Key1查詢對應的表T1,將查詢到的記錄L1的字段值賦值給模式樹對應節(jié)點N1的相關屬性和簡單類型子節(jié)點,這里一個主鍵Key對應唯一一條記錄L。然后依次查詢該表對應的一系列子表的外鍵。如查詢子表T2對應節(jié)點類型Type2,則表T2外鍵值等于父表T1主鍵Key1的記錄L2(集合)的個數(shù)對應節(jié)點N1的Type2類型子節(jié)點出現(xiàn)的個數(shù),然后記錄下記錄集每條記錄的主鍵。
(3)循環(huán)執(zhí)行步驟(2),直到所有的模式樹節(jié)點對應的數(shù)據(jù)庫表記錄均賦值給節(jié)點屬性和簡單類型子節(jié)點或CDATA部分。便完成了關系數(shù)據(jù)庫數(shù)據(jù)向XML文檔的轉換。
在總結了一般無結構數(shù)據(jù)或關系數(shù)據(jù)轉換為XML文檔的EPG數(shù)據(jù)轉換技術的基礎上,針對EPG數(shù)據(jù)規(guī)范提出了一種基于Schema模式的XML數(shù)據(jù)轉換技術。由于轉換后的XML文件根據(jù)協(xié)議需要分級成兩個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技術的數(shù)據(jù)轉換[M].北京:中國科學院軟件研究所,2001:22-29.
[4] 王海波,耿暉,姜吉發(fā),等.基于XML的數(shù)據(jù)交換的實現(xiàn)[J].計算機應用,2001,21(4):1-2.
[5] 王勝清,何丁山,李曉明,等.一個從關系數(shù)據(jù)模型到XML文檔的翻譯器設計[J].計算機應用,2001,21(7):1-4.