999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于數據庫的Xml腳本引擎的設計與實現

2013-04-29 00:00:00徐慧仝青山汪志剛柳保燕
中國新通信 2013年11期

【摘要】XML作為一種國際化的通用標記語言,廣泛應用于IT產業的各個領域。數據交換是XML的重要應用之一,平臺間的接口就常采用它來實現。數據接口一般都較為穩定,但也不盡然。本文就是為了應對XML接口格式的頻繁變化,探索并提出了一種全新的解決方案,設計和研發了基于數據庫的XML腳本及其實現引擎。該引擎已通過了北京同方衛康科技有限公司的測試,應用于實踐。

【關鍵詞】XMLScript數據交換語法分析器語法解析器棧

一、引言

XML是由W3C組織于1998年2月制定的一種通用語言規范。XML是SGML(標準通用標記語言)的一個子集,其最大優點在于適合網上發布和數據交換[1]。XML是目前全球范圍內描述數據和交換數據的一種標準的方式。XML作為平臺接口,一般數據格式都比較穩定,可以用多種技術和方式來實現它;但當數據格式變動比較頻繁的情況下,每次數據格式的微小變化都必須修改源代碼。本文就是以北京同方衛康科技有限公司面對北京市衛生局統計平臺接口的變化為契機,提出了一種應對這種變化的通用解決方案。

二、Xml腳本引擎的設計原理

2.1XML通用設計接口

作為一種數據交換的中間件,XML具有跨平臺、結構化和子描述性強的特點[2]。因此,常用XML作為系統和平臺間的數據接口。設計師們通過分析數據接口的格式,從數據庫或者基于數據庫的數據層中產生這些數據。圖1簡單描述了這種通用性XML的生成過程。

2.2XML腳本引擎工作流程

由通用XML生成流程圖易見,如XML數據格式變化比較頻繁,哪怕只有一個微小的改動,也得修改代碼。本文設計的基于數據庫的XML腳本引擎,一般情況下,只需通過更新XML模板文件就能夠應對這種變化;而此引擎可以作為Active DLL或者基層類庫來使用。圖2,展示了該引擎的工作流程圖。

三、XML腳本引擎設計與實現

3.1XML腳本

在XML示例文件基礎上添加一些自定義語法規則信息,我們把這些符合一定規范的附加信息叫做XML腳本(XMLScript)。

XMLScript規則制定如下:(1)腳本位置。(a)置于注釋節點中;(b)置于無實際功用的描述性屬性中;(c)置于Element的Text文本值中;(2)變量信息定義。(a)單變量格式:{@變量名:變量值}。(b)多變量格式:{@變量名1:變量值1;@變量名2:變量值2};(3)執行語句:(a)Sql執行語句:{@fSQL:@數據庫連接變量,@r記錄集變量,@Sql語句變量[;@變量|@r其他已打開記錄集.字段]*};(b)刪除空節點:{@fDelNullNode:true | 1};(c)循環節點:{@fLOOP1:記錄集};(d)自定義函數:{@f函數名:[變量]}。

3.2XMLScript模板

我們稱加入了XMLScript的XML文件為XMLScript模板,即XMLScript Template。模板示例如下:

注:本示例中所采用的SQL語句是同方的工程師們在研究SQL SERVER優化機制后采用的優化形式,其功效與參數化查詢不相上下,但要簡練得多。

3.3XML腳本引擎

我們把通過解析和解釋XMLScript模板,自動從數據庫中獲取指定數據的軟件體系稱為XML腳本引擎(DBToXMLScript Engine)。

鑒于XML的層級特點和腳本定義的語法規則,該引擎采用棧作為主存儲結構。引擎加載XMLScript模板后,語法分析器逐次遍歷各節點,從節點信息中提取出腳本信息,再交由語法解釋器處理。該引擎采用的是邊解釋邊執行的方式,故可視為解釋型引擎,具體設計架構如圖3所示。

(1)語法分析器(Parser)

語法分析器,用于分析XML模板文件,循環遍歷各節點,提取出XMLScript,再把這些腳本信息交由語法解析器來處理。

(2)語法解釋器(Interpreter)

語法解釋器,把分析器推送過來的語法信息分類,參照該層次XML節點依次把腳本和節點信息放入不同的棧中,并依次執行“執行語句”,生成目標XML文件。

執行期間,還需記錄操作日志、刪除空節點、刪除屬性信息等。記錄操作日志,可以協助調試和發現錯誤信息;刪除空節點可以刪除一些無用的記錄;刪除屬性信息,可以減小XML文件的大小。這幾項操作被設置為了可選項,但它們在開發和應用中往往是必不可少的。

除已定義好的函數外,該引擎還允許它的用戶(客戶端)重載自定義函數,來對從數據庫中得到的數據進行加工,以滿足最終平臺的要求。如示例模板中的{@fDICT_GENDER:@r病人基本信息.GENDERID},由于客戶醫院的性別字典ID值與衛生局平臺不一致,因此需要一個重載的函數DICT_GENDER來實現。

(3)棧(Stack)

按XMLScript包含的信息,棧可被分為三類:常量棧、命令棧、記錄集棧。常量變量信息都存儲為常量;命令棧,用于存儲可執行語句信息;記錄集棧,用于存儲數據庫查詢操作返回的記錄集。

XMLScript的變量采用棧作為存儲結構,因此腳本的位置決定了其所在的作用域,就如同程序變量一樣。首先,位于XML根節點之前的Script,其中的變量信息可被視為全局變量,最先入棧卻最后出棧;再者,位于各節點間和節點屬性內的Script,其中的變量信息也依次入棧,同時還必須增加輔助標記,以在該節點訪問完畢后釋放該節點內的變量。

3.4引擎測試與驗證

該引擎只對外公開了幾個屬性和三個方法,但卻可以完成復雜的功能。事實上,只有加載XML模板文件Load方法和保存SaveAs方法才是必須的,UserFunction方法用來擴展自定義函數,實現數據庫中數據的二次處理,只有必要時才重載。

該引擎易于使用,核心測試代碼如下:

DBToXML engine =new DBToXML( );

engine.Load(@“C:\template.xml”);

engine.SaveAs(@”C:\result.xml”);

運行結果如圖4所示。

四、結束語

本文設計和開發了基于數據庫的XML腳本及其引擎,將XML接口的易變性封裝在了XML腳本模板中,只需更新模板文件就能應對接口的變化,極大的提高了開發人員的工作效率。由于該引擎直接操作數據庫勢必會造成性能損失,不適用于對實時性要求較高的系統。另外,SQL語句置于模板文件,模板位置可能直接影響公司數據安全,對安全性要求較高的用戶需增加防護策略。

參考文獻

[1]王仲,陳曉鷗.基于XML的數據交換與存取技術研究.計算機工程與應用,2001,24:108-111

[2]孫君明,郭紅.基于XML的異構信息交換技術研究[J].計算機應用研究,2003,20(1):72-73

主站蜘蛛池模板: 午夜免费小视频| 国产综合网站| 亚洲美女视频一区| 青青草久久伊人| 999国内精品视频免费| 中国一级特黄大片在线观看| 精品亚洲欧美中文字幕在线看| 先锋资源久久| 在线日本国产成人免费的| 成·人免费午夜无码视频在线观看| 一级爱做片免费观看久久| 中文字幕 日韩 欧美| 亚洲视频免费在线看| 国产在线视频欧美亚综合| 午夜精品福利影院| 国产成人福利在线| 嫩草国产在线| 久久视精品| 狠狠色综合网| 国产成人综合久久精品尤物| 九色综合伊人久久富二代| 夜夜高潮夜夜爽国产伦精品| 性喷潮久久久久久久久| 亚洲国产日韩一区| 久久久久久久久久国产精品| 五月婷婷亚洲综合| 男女精品视频| 成人无码一区二区三区视频在线观看| 色吊丝av中文字幕| 99尹人香蕉国产免费天天拍| 亚洲午夜福利精品无码| 欧美激情二区三区| 亚洲中文字幕无码爆乳| 国产美女免费| 成人免费黄色小视频| 国产区91| 欧美视频二区| 国产精品香蕉| 久久无码高潮喷水| 成人午夜免费视频| 成人中文在线| 91成人免费观看在线观看| 人妻少妇久久久久久97人妻| 国产视频大全| 欧美不卡视频在线观看| 午夜国产不卡在线观看视频| 亚洲国产成人超福利久久精品| 91福利国产成人精品导航| 欧美一级视频免费| 国产一区二区色淫影院| 亚洲色欲色欲www网| 19国产精品麻豆免费观看| 成人免费网站久久久| 精品黑人一区二区三区| 国产精品免费入口视频| 精品福利视频导航| 中文字幕丝袜一区二区| 三上悠亚一区二区| 日本中文字幕久久网站| 日韩欧美国产综合| 伊在人亚洲香蕉精品播放| 日韩美女福利视频| a毛片免费看| 亚洲av综合网| 亚洲欧洲一区二区三区| 欧美国产中文| 黄色网站在线观看无码| 国产福利不卡视频| 国产一区二区网站| 国产尹人香蕉综合在线电影| 久草青青在线视频| 又粗又硬又大又爽免费视频播放| 香蕉蕉亚亚洲aav综合| 欧美日本二区| 国产原创第一页在线观看| 国产99视频在线| 老司机久久99久久精品播放 | 欧美日韩中文国产| 色偷偷av男人的天堂不卡| 久久精品人人做人人爽97| 国产成人精品高清不卡在线| 久久精品女人天堂aaa|