摘 要: 數據的轉換與傳輸技術是DMB EPG前端系統的核心技術。通過深入研究DMB EPG的協議、技術背景和工作原理,探討了DMB EPG前端系統的數據轉換技術,并設計實現了基于XML的DMB EPG數據轉換技術,即提出了一種基于Schema模式的數據轉換方法。
關鍵詞: 數字多媒體廣播;電子節目指南;多媒體對象傳輸
采用XML格式來描述EPG(Electronical Program Guide)的數據理由有:(1)標準問題。XML是描述結構化數據的一個非常好的標準。(2)擴展性。由于EPG數據類型隨著廣播電視的發展必然會有新的數據類型出現,而XML非常有利于未來擴展向后兼容。(3)隨著XML技術的不斷發展成熟,關于XML技術的相關開發工具日益豐富,為以后從事EPG相關開發及功能擴展提供了便利。
為此,引出本文所涉及的一般數據轉換為XML格式數據的問題,這里的一般數據指無結構數據或關系數據庫中的結構數據。在研究了已有的數據轉換模式的基礎上,本文提出了一種基于Schema模式的將一般數據轉換為XML文檔的方法。
1 DMB EPG系統
數字多媒體廣播DMB(Digital Multimedia Broadcasting)是在DAB(Digital Audio Broadcasting)基礎上發展起來的,DMB充分地利用了DAB能在高速移動環境下可靠接收信號的技術優勢,在功能上將原來傳輸單一的音頻信息擴展為數據、文字、圖形與視頻等多種載體,即多媒體對象傳輸MOT(Multimedia Object 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 version=”1.0”>
<ProgrammeGroup>
<Programme>
<SelectStmt>
SELECT shortName,mediumName,longName,KeyWords From Programme
</ SelectStmt >
</Programme>
<ProgrammeGroup>
如果生成XML文檔時,系統掃描這個模板,當遇到<SelectStmt>指令的時候,系統識別出這是一個可執行指令,于是調用指令執行程序執行該指令。指令執行后的結果為:
<?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 基于模型的數據轉換方法
基于模型的數據轉換方法用事先定義好的數據模型來映射XML文檔結構與其他格式數據的結構之間的關系。以數據庫為例,一個最為簡單的模型就是將文檔結構定義為如下的模型:
<database>
<table>
<row>
<columnl>...</columnl>
<column2>...<lcolumn2>
</table>
</database>
把數據庫數據轉換成XML文檔時,只要把一個表或一個查詢結果的數據插入到相應位置即可;而把XML文檔數據轉換成數據庫數據時,只要把內容插入到相應的表中即可。另一種常用的模型是將XML文檔的結構定義為一棵數據對象樹,根據規則將文檔的層次結構轉換為樹狀結構(通常是把文檔中的元素定義為樹的節點)。這種模型對于XML文檔與面向對象數據庫和層次數據庫之間的轉換是非常方便的。當與關系數據庫進行轉換時,可以利用傳統的“對象-關系”映射技術來實現。圖2為基于模型的轉換方法的架構圖。
3.3 基于Schema模式的數據轉換方法
基于模板的轉換方法的好處在于轉換的步驟比較簡單,只要給出模板,就可以快速地生成相應的XML文檔,如圖2所示。不足之處在于,它只適合將其他類型的數據轉換為XML文檔,對于反向的轉換就無能為力了。此外,基于模板的轉換方法關鍵是要生成大量合理的模板,為此,系統需要為用戶提供一套生成模板的工具以及相應的指令執行程序。對于數據庫數據,可以借用數據庫管理系統方便地生成指令執行程序;而文本數據和OCR數據指令執行程序的編寫則需要大量的工作[3]。
基于模型的轉換方法由于有數據模型的支持,轉換工作相對比較簡單,并且可以完成XML數據與其他格式數據之間的雙向轉換。但是模型的引入使得XML文檔的結構受到了一些限制,即一個XML文檔必須符合模型所規定的結構,才能將XML文檔轉換成其他類型的數據,而從其他類型數據轉換得到的XML文檔也具有某種結構特點。所以,基于模型的轉換方法的關鍵是設計一個靈活的映射模型,使得對XML文檔結構的限制盡量地少[3]。
由于DMB EPG的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所示。
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對應得父表的主鍵。
在完成數據庫表與模式樹節點的映射后,便可以訪問數據庫記錄,逐層確定各層節點的出現次數,將模糊樹的框架變清晰;同時根據樹節點與關系數據庫表的映射,查詢對應的數據庫表獲得數據,并用數據給對應樹節點屬性或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.