本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)庫的xmlschema約束文件生成方法和裝置。
背景技術(shù):
可擴展標記型(extensiblemarkuplanguage,xml)數(shù)據(jù)庫被越來越多的應(yīng)用到各種場景中,例如工廠系統(tǒng)自動化軟件平臺系統(tǒng)(factoryautomationsystem,fa)等。xml數(shù)據(jù)庫以xml格式文件進行數(shù)據(jù)的存儲和查詢等操作。由于xml文件的文本屬性,其容易被人為地錯誤編輯,如被誤刪字母、被重復(fù)創(chuàng)建節(jié)點等,因此,對xml文件的有效性進行約束就變得非常必要。
目前,對xml文件的有效性進行約束的方法是建立對應(yīng)的xmlschema約束文件,在該schema文件中對xml文件中的節(jié)點及其屬性進行規(guī)范約束,但是由于一個xml數(shù)據(jù)庫通常涉及的xml文件數(shù)量非常龐大,因此由用戶逐個編輯schema文件不但非常耗時,而且效率低下。
技術(shù)實現(xiàn)要素:
為了解決上述現(xiàn)有技術(shù)由用戶手工編輯schema文件效率低下、容易出錯的問題,本發(fā)明實施例提供了一種xml數(shù)據(jù)庫的xmlschema約束文件生成方法和裝置。
為了解決上述問題,本發(fā)明實施例公開了一種數(shù)據(jù)庫的xmlschema約束文件生成方法,包括:
確定節(jié)點數(shù)據(jù)模型,所述節(jié)點數(shù)據(jù)模型包括以下信息至少其中之一:節(jié)點名、節(jié)點級別、節(jié)點數(shù)量限制、節(jié)點數(shù)據(jù)類型、是否允許為空和節(jié)點順序;
根據(jù)所述節(jié)點數(shù)據(jù)模型確定節(jié)點實例,所述節(jié)點實例包括:第一節(jié)點和第一節(jié)點屬性、第二節(jié)點和第二節(jié)點屬性、第三節(jié)點和第三節(jié)點屬性;其中, 所述第一節(jié)點為根節(jié)點;所述第二節(jié)點為第一節(jié)點的子節(jié)點;所述第三節(jié)點為所述第二節(jié)點的子節(jié)點;
按照所述節(jié)點實例生成xmlschema約束文件。
在本發(fā)明的一個可選實施例中,所述根據(jù)所述節(jié)點數(shù)據(jù)模型確定節(jié)點實例,包括:
獲取用戶輸入的節(jié)點屬性數(shù)據(jù);
使用所述節(jié)點屬性數(shù)據(jù)和所述節(jié)點數(shù)據(jù)模型生成對應(yīng)的節(jié)點實例。
可選的,所述節(jié)點實例中包括:一個第一節(jié)點、至少一個第二節(jié)點和至少三個第三節(jié)點。
可選的,所述按照所述節(jié)點實例生成xmlschema約束文件,包括:
根據(jù)所述第一節(jié)點和第一節(jié)點屬性生成對應(yīng)的第一節(jié)點標記和第一節(jié)點屬性標記;
根據(jù)所述第二節(jié)點和第二節(jié)點屬性依次生成對應(yīng)的第二節(jié)點標記和第二節(jié)點屬性標記,直到完成對所有第二節(jié)點的處理;
確定各個第二節(jié)點對應(yīng)的第三節(jié)點和第三節(jié)點屬性并生成對應(yīng)的第三節(jié)點標記和第三節(jié)點屬性標記;
根據(jù)所述生成的第一節(jié)點標記和第一節(jié)點屬性標記、第二節(jié)點標記和第二節(jié)點屬性標記、第三節(jié)點標記和第三節(jié)點屬性標記生成xmlschema約束文件。
本發(fā)明實施例還公開了一種數(shù)據(jù)庫的xmlschema約束文件生成裝置,包括:數(shù)據(jù)模型確定模塊、節(jié)點實例確定模塊和約束文件生成模塊,其中,
數(shù)據(jù)模型確定模塊,用于確定節(jié)點數(shù)據(jù)模型,所述節(jié)點數(shù)據(jù)模型包括以下信息至少其中之一:節(jié)點名、節(jié)點級別、節(jié)點數(shù)量限制、節(jié)點數(shù)據(jù)類型、是否允許為空和節(jié)點順序;
節(jié)點實例確定模塊,用于根據(jù)所述節(jié)點數(shù)據(jù)模型確定節(jié)點實例,所述節(jié)點實例包括:第一節(jié)點和第一節(jié)點屬性、第二節(jié)點和第二節(jié)點屬性、第三節(jié)點和第三節(jié)點屬性;其中,所述第一節(jié)點為根節(jié)點;所述第二節(jié)點為第一節(jié) 點的子節(jié)點;所述第三節(jié)點為所述第二節(jié)點的子節(jié)點;
約束文件生成模塊,用于按照所述節(jié)點實例生成xmlschema約束文件。
可選的,所述節(jié)點實例確定模塊,包括:
節(jié)點屬性確定子單元,用于獲取用戶輸入的節(jié)點屬性數(shù)據(jù);
節(jié)點實例生成子單元,用于使用所述節(jié)點屬性數(shù)據(jù)和所述節(jié)點數(shù)據(jù)模型生成對應(yīng)的節(jié)點實例。
可選的,所述節(jié)點實例中包括:一個第一節(jié)點、至少一個第二節(jié)點和至少三個第三節(jié)點。
可選的,
所述約束文件生成模塊,還用于根據(jù)所述第一節(jié)點和第一節(jié)點屬性生成對應(yīng)的第一節(jié)點標記和第一節(jié)點屬性標記;根據(jù)所述第二節(jié)點和第二節(jié)點屬性依次生成對應(yīng)的第二節(jié)點標記和第二節(jié)點屬性標記,直到完成對所有第二節(jié)點的處理;確定各個第二節(jié)點對應(yīng)的第三節(jié)點和第三節(jié)點屬性并生成對應(yīng)的第三節(jié)點標記和第三節(jié)點屬性標記;根據(jù)所述生成的第一節(jié)點標記和第一節(jié)點屬性標記、第二節(jié)點標記和第二節(jié)點屬性標記、第三節(jié)點標記和第三節(jié)點屬性標記生成xmlschema約束文件。
本發(fā)明實施例至少包括以下優(yōu)點:
通過實施本發(fā)明實施例提供的方法,按照實際業(yè)務(wù)需要預(yù)先設(shè)定節(jié)點數(shù)據(jù)模型并確定節(jié)點實例,然后依據(jù)該節(jié)點實例生成xmlschema文件,該schema文件包含了完整的第一節(jié)點標記和第一節(jié)點屬性標記、第二節(jié)點標記和第二節(jié)點屬性標記、第三節(jié)點標記和第三節(jié)點屬性標記,使用該xmlschema文件即可對xml文件進行約束校驗,避免因為用戶誤操作、編輯而導(dǎo)致的xml文件節(jié)點重復(fù)、屬性錯誤等問題。
附圖說明
圖1是本發(fā)明實施例一提供的一種數(shù)據(jù)庫的xmlschema約束文件生成 方法的步驟流程圖;
圖2是本發(fā)明實施例二提供的一種數(shù)據(jù)庫的xmlschema約束文件生成方法的步驟流程圖;
圖3是本發(fā)明實施例提供的一種數(shù)據(jù)庫的xmlschema約束文件生成裝置的結(jié)構(gòu)框圖。
具體實施方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。
參照圖1,示出了本發(fā)明的一種數(shù)據(jù)庫的xmlschema約束文件生成方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟101,確定節(jié)點數(shù)據(jù)模型;
具體的,所述節(jié)點數(shù)據(jù)模型包括以下信息至少其中之一:節(jié)點名、節(jié)點級別、節(jié)點數(shù)量限制、節(jié)點數(shù)據(jù)類型和節(jié)點順序。
需要說明的是,在實施本發(fā)明時可采用多種方式定義所述節(jié)點數(shù)據(jù)模型,為了便于本領(lǐng)域技術(shù)人員理解,下面以面向?qū)ο笳Z言為例給出一個節(jié)點數(shù)據(jù)模型的示例,在該節(jié)點模型中包括定義的節(jié)點屬性和方法:
步驟102,根據(jù)所述節(jié)點數(shù)據(jù)模型確定節(jié)點實例;
具體的,所述節(jié)點實例包括:第一節(jié)點和第一節(jié)點屬性、第二節(jié)點和第 二節(jié)點屬性、第三節(jié)點和第三節(jié)點屬性。
其中,所述第一節(jié)點為根節(jié)點,所述第二節(jié)點為所述第一節(jié)點的子節(jié)點,所述第三節(jié)點為所述第二節(jié)點的子節(jié)點;第一節(jié)點的數(shù)量通常為一個,第二節(jié)點、第三節(jié)點的數(shù)量則可根據(jù)實際需要確定。在本發(fā)明的一個可選實施例中,所述節(jié)點實例包括至少一個第二節(jié)和至少三個第三節(jié)點。
步驟103,按照所述節(jié)點實例生成xmlschema約束文件。
由于節(jié)點實例確定了該節(jié)點以及對應(yīng)的節(jié)點屬性,如節(jié)點名、節(jié)點級別和節(jié)點類型等,因此,按照該節(jié)點實例即可生成xmlschema文件。
在本發(fā)明一個可選實施例中,所述按照所述節(jié)點實例生成xml約束schema文件,具體可以包括以下子步驟:
子步驟1,根據(jù)所述第一節(jié)點和第一節(jié)點屬性生成對應(yīng)的第一節(jié)點標記和第一節(jié)點屬性標記;
子步驟2,根據(jù)所述第二節(jié)點和第二節(jié)點屬性依次生成對應(yīng)的第二節(jié)點標記和第二節(jié)點屬性標記,直到完成對所有第二節(jié)點的處理;
子步驟3,確定各個第二節(jié)點對應(yīng)的第三節(jié)點和第三節(jié)點屬性并生成對應(yīng)的第三節(jié)點標記和第三節(jié)點屬性標記;
子步驟4,根據(jù)所述生成的第一節(jié)點標記和第一節(jié)點屬性標記、第二節(jié)點標記和第二節(jié)點屬性標記、第三節(jié)點標記和第三節(jié)點屬性標記生成xmlschema約束文件。
由于所述第一節(jié)點、第二節(jié)點、第三節(jié)點在xml文件中以樹形結(jié)構(gòu)排列,即第一節(jié)點為根節(jié)點,第二節(jié)點為第一節(jié)點的子節(jié)點,第三節(jié)點為第二節(jié)點的子節(jié)點。
具體實現(xiàn)時,本領(lǐng)域技術(shù)人員可根據(jù)所使用程序設(shè)計語言的不同確定上述步驟的具體實現(xiàn),下面通過設(shè)置schmea文件生成方法generateschema()實現(xiàn)上述步驟,該方法具體可以通過以下步驟實現(xiàn):
假設(shè)參數(shù)xmlnodeinfo表示待生成的節(jié)點實例,參數(shù)xmlschemafile表示輸出的xmlschema約束文件
子步驟a,獲取xmlnodeinfo的根節(jié)點(第一節(jié)點)信息;
子步驟b,獲取xmlnodeinfo的所有第二節(jié)點信息,對其中每一個第二節(jié)點執(zhí)行以下步驟b1至b3:
子步驟b1,獲取當前第二節(jié)點對應(yīng)的所有第三節(jié)點信息,對其中每一個第三節(jié)點執(zhí)行以下步驟b11至b12:
子步驟b11,解析當前第三節(jié)點的屬性信息,該屬性信息包括節(jié)點名、數(shù)據(jù)類型、數(shù)量限制、是否允許為空等屬性;
子步驟b12,根據(jù)上述解析結(jié)果確定第三節(jié)點標記和第三節(jié)點屬性標記;
具體的,按照schema約束文件的格式設(shè)置輸出文件,示例如下:
子步驟b2,解析當前第二節(jié)點的屬性信息,該屬性信息包括節(jié)點名、數(shù)量限制、是否允許為空等屬性。
子步驟b3,根據(jù)上述解析結(jié)果確定當前第二節(jié)點標記和第二節(jié)點屬性標記;
具體的,該步驟基于子步驟b1的輸出結(jié)果進一步設(shè)置xmlschemafile中的第二節(jié)點信息。
子步驟c,解析根節(jié)點(第一節(jié)點)屬性信息,該屬性信息包括節(jié)點名,以及根據(jù)該解析結(jié)果確定根節(jié)點標記和根節(jié)點屬性標記;
具體的,該步驟基于子步驟b3的輸出結(jié)果進一步設(shè)置xmlschemafile中的第一節(jié)點信息
子步驟d,輸出xmlschema約束文件。
綜上,本發(fā)明實施例提供的上述方法,通過預(yù)先設(shè)定的節(jié)點數(shù)據(jù)模型和實際業(yè)務(wù)需要確定節(jié)點實例,然后依據(jù)該節(jié)點實例生成xmlschema文件,該schema文件包含了完整的第一節(jié)點標記和第一節(jié)點屬性標記、第二節(jié)點 標記和第二節(jié)點屬性標記、第三節(jié)點標記和第三節(jié)點屬性標記,使用該xmlschema文件即可對xml文件進行約束校驗,避免因為用戶誤操作、編輯而導(dǎo)致的xml文件節(jié)點重復(fù)、屬性錯誤等問題。
參照圖2,圖2為本發(fā)明實施例提供的一種數(shù)據(jù)庫的xmlschema約束文件生成方法應(yīng)用實施例的步驟流程圖,假設(shè)當前xml文件的約束如下:
根節(jié)點為“hosts”;
二級節(jié)點為“host”,存在數(shù)量無限制;
在每個二級節(jié)點中,共有三級節(jié)點三個,分別是“hostid”、“name”和“modeid”;
所述方法包括:
步驟201,通過彈出窗口獲取用戶輸入的節(jié)點屬性數(shù)據(jù);
在本發(fā)明的一個彈出窗口示例中,用戶可添加/刪除第二節(jié)點和對應(yīng)的第三節(jié)點,并且對于其中每一個節(jié)點,用戶可直接設(shè)置各節(jié)點的屬性數(shù)據(jù),包括節(jié)點名稱、節(jié)點數(shù)值類型、是否允許為空等,設(shè)置完成后用戶點擊‘確定’按鈕即可獲得用戶在該窗口中輸入的節(jié)點屬性數(shù)據(jù)。
需要說明的是,上述通過彈出窗口獲取用戶輸入的節(jié)點屬性數(shù)據(jù)只是本發(fā)明優(yōu)選的方式,在具體實現(xiàn)時,本領(lǐng)域技術(shù)人員還可選擇其它方式獲取節(jié)點屬性數(shù)據(jù),本發(fā)明對此不做限制,例如通過網(wǎng)頁、觸摸操作等。
步驟202,根據(jù)用戶輸入的節(jié)點屬性數(shù)據(jù)和節(jié)點數(shù)據(jù)模型生成節(jié)點實例xmlnodeinfo;
步驟203,解析節(jié)點實例xmlnodeinfo;
步驟204,使用循環(huán)語句逐個編寫第三節(jié)點信息。
具體包括每個第三節(jié)點標記(即“hostid”、“name”和“modeid”)和對應(yīng)的節(jié)點屬性標記,包括:節(jié)點名、數(shù)量限制、數(shù)據(jù)類型、是否允許為空等。
步驟205,判斷第三節(jié)點是否全部編寫完成,若完成,則執(zhí)行步驟206,否則執(zhí)行步驟204;
步驟206,使用循環(huán)語句逐個編寫第二節(jié)點信息。
具體包括每個第二節(jié)點標記(即“host”)和對應(yīng)的屬性標記,包括:節(jié)點名、數(shù)量限制、數(shù)據(jù)類型、是否允許為空等。
步驟207,判斷第二節(jié)點是否全部編寫完成,若完成,則執(zhí)行步驟208,否則執(zhí)行步驟206;
步驟208,編寫第一節(jié)點信息;
編寫第一節(jié)點標記(即根節(jié)點hosts”)和第一節(jié)點屬性標記。
步驟209,生成schema文件。
綜上,在上述實施例中使用彈出窗口獲取用戶輸入的節(jié)點屬性數(shù)據(jù),使得用戶能夠以所見即所得的方式對xml數(shù)據(jù)文件的節(jié)點及其屬性進行設(shè)置,可進一步減少生成節(jié)點實例所需的時間,提高生成schema文件的效率。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
參照圖3,示出了本發(fā)明的一種數(shù)據(jù)庫的xmlschema約束文件生成裝置實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:數(shù)據(jù)模型確定模塊310、節(jié)點實例確定模塊320和約束文件生成模塊330,其中,
數(shù)據(jù)模型確定模塊310,用于確定節(jié)點數(shù)據(jù)模型,所述節(jié)點數(shù)據(jù)模型包括:節(jié)點名、節(jié)點級別、節(jié)點數(shù)量限制、節(jié)點數(shù)據(jù)類型、是否允許為空和節(jié)點順序;
節(jié)點實例確定模塊320,用于根據(jù)所述節(jié)點數(shù)據(jù)模型確定節(jié)點實例,所述節(jié)點實例包括:第一節(jié)點和第一節(jié)點屬性、第二節(jié)點和第二節(jié)點屬性、第三節(jié)點和第三節(jié)點屬性;其中,所述第一節(jié)點為根節(jié)點;所述第二節(jié)點為第一節(jié)點的子節(jié)點;所述第三節(jié)點為所述第二節(jié)點的子節(jié)點;
約束文件生成模塊330,用于按照所述節(jié)點實例生成xmlschema約束文件。
可選的,所述節(jié)點實例確定模塊320,包括:
節(jié)點屬性確定子單元,用于獲取用戶輸入的節(jié)點屬性數(shù)據(jù);
節(jié)點實例生成子單元,用于使用所述節(jié)點屬性數(shù)據(jù)和所述節(jié)點數(shù)據(jù)模型生成對應(yīng)的節(jié)點實例。
可選的,所述節(jié)點實例中包括:一個第一節(jié)點、至少一個第二節(jié)點和至少三個第三節(jié)點。
在本發(fā)明的一個可選實施例中,所述約束文件生成模塊,還用于根據(jù)所述第一節(jié)點和第一節(jié)點屬性生成對應(yīng)的第一節(jié)點標記和第一節(jié)點屬性標記;根據(jù)所述第二節(jié)點和第二節(jié)點屬性依次生成對應(yīng)的第二節(jié)點標記和第二節(jié)點屬性標記,直到完成對所有第二節(jié)點的處理;確定各個第二節(jié)點對應(yīng)的第三節(jié)點和第三節(jié)點屬性并生成對應(yīng)的第三節(jié)點標記和第三節(jié)點屬性標記;根據(jù)所述生成的第一節(jié)點標記和第一節(jié)點屬性標記、第二節(jié)點標記和第二節(jié)點屬性標記、第三節(jié)點標記和第三節(jié)點屬性標記生成xmlschema約束文件。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算機程序產(chǎn)品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明實施例是參照根據(jù)本發(fā)明實施例的方法、終端設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計算機或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一 個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上對本發(fā)明所提供的一種數(shù)據(jù)庫的xmlschema約束文件生成方法和裝置,進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。