專利名稱:Xml文件的校驗方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文件校驗領(lǐng)域,特別涉及一種XML文件的校驗方法和裝置。
背景技術(shù):
XML(Extensible Markup Language,可擴展標記語言)是一種通用標記語言,其通過一系列簡單且便于建立的標記對數(shù)據(jù)進行描述,易于掌握和使用。在hternet環(huán)境中, XML已成為當前處理結(jié)構(gòu)化文件信息的有力工具。隨著XML的廣泛應(yīng)用,如何對XML文件進行校驗,從而確保XML文件的正確性也逐步受到重視?,F(xiàn)有技術(shù)中,通過在XML文件中嵌入具有校驗規(guī)則的校驗邏輯代碼,實現(xiàn)對XML文件的校驗。該代碼作為XML文件的一部分存在于XML文件中,在XML文件運行的同時即實現(xiàn)了對XML文件的校驗。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題在XML文件中嵌入具有校驗邏輯功能的程序代碼,雖然可以對的文件內(nèi)容進行校驗,但是如果需要更新校驗規(guī)則,則需要進入XML文件,更改該具有校驗邏輯功能的程序代碼,這對于對整個XML文件并不了解的程序員來說,是極為復(fù)雜、難以實現(xiàn)的;并且,如果 XML文件已經(jīng)發(fā)布,通過進入XML文件從而修改校驗規(guī)則是不可接受的,從而沒辦法更新校驗規(guī)則。
發(fā)明內(nèi)容
為了實現(xiàn)無需修改XML文件,即可實現(xiàn)對XML文件的校驗,本發(fā)明實施例提供了一 種XML文件的校驗方法,所述方法包括獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則;生成所述校驗規(guī)則對應(yīng)的XSL校驗文件;獲取所述待校驗的XML文件;根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果。所述獲取用戶設(shè)置的所述校驗規(guī)則之后還包括判斷所述校驗規(guī)則是否為XML格式,如果不是,則將所述校驗規(guī)則轉(zhuǎn)換成XML格式。所述生成所述校驗規(guī)則對應(yīng)的XSL校驗文件具體包括;根據(jù)所述校驗規(guī)則,生成Xpath匹配查詢文件;根據(jù)所述校驗規(guī)則,生成XSLT轉(zhuǎn)換文件;根據(jù)所述Xpath匹配查詢文件和所述XSLT轉(zhuǎn)換文件生成XSL校驗文件。所述根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果具體包括根據(jù)所述XSL校驗文件中的所述Xpath匹配查詢文件在所述待校驗XML文件中查尋與所述校驗規(guī)則匹配的部分;
根據(jù)XSL校驗文件中的所述XSLT轉(zhuǎn)換文件對所述匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)果;根據(jù)轉(zhuǎn)換結(jié)果輸出校驗結(jié)果。本發(fā)明實施例提供了一種XML文件的校驗裝置法,所述裝置包括校驗規(guī)則獲取模塊,用于獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則;XSL校驗文件生成模塊,用于生成所述校驗規(guī)則對應(yīng)的XSL校驗文件;待校驗的XML文件獲取模塊,用于獲取所述待校驗的XML文件;校驗結(jié)果輸出模塊,用于根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果。所述裝置還包括格式轉(zhuǎn)換模塊,用于判斷所述校驗規(guī)則是否為XML格式,如果不是,則將所述校驗規(guī)則轉(zhuǎn)換成XML格式。所述XSL校驗文件生成模塊具體包括;Xpath匹配查詢文件生成單元,用于根據(jù)所述校驗規(guī)則,生成Xpath匹配查詢文件;XSLT轉(zhuǎn)換文件生成單元,用于根據(jù)所述校驗規(guī)則,生成XSLT轉(zhuǎn)換文件;XSL校驗文件生成單元,用于根據(jù)所述Xpath匹配查詢文件和所述XSLT轉(zhuǎn)換文件生成XSL校驗文件。所述校驗結(jié)果輸出模塊具體包括規(guī)則匹配單元,用于根據(jù)所述XSL校驗文件中的所述Xpath匹配查詢文件在所述待校驗XML文件中查尋與所述校驗規(guī)則匹配的部分;匹配轉(zhuǎn)換單元,用于根據(jù)XSL校驗文件中的所述XSLT轉(zhuǎn)換文件對所述匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)果;校驗結(jié)果輸出單元,用于根據(jù)轉(zhuǎn)換結(jié)果輸出校驗結(jié)果。本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是本發(fā)明實施例通過生成所述校驗規(guī)則對應(yīng)的XSL校驗文件,根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,實現(xiàn)了無需修改XML文件內(nèi)容,只修改用戶校驗規(guī)則即可對XML文件內(nèi)容的進行校驗,從而使用戶只需關(guān)注校驗規(guī)則的書寫,不用擔心XML文件邏輯會改變。
圖1是是本發(fā)明實施例1中提供的XML文件校驗方法的流程圖;圖2是是本發(fā)明實施例2中提供的XML文件校驗方法的流程圖;圖3是是本發(fā)明實施例3中提供的XML文件校驗裝置的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。實施例1
如圖1所示,本實施例提供了一種XML文件的校驗方法,該方法包括SlOl 獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則;S102 生成所述校驗規(guī)則對應(yīng)的XSL校驗文件;S103 獲取所述待校驗的XML文件;S104 根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果。本實施例通過生成所述校驗規(guī)則對應(yīng)的XSL校驗文件,根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,實現(xiàn)了無需修改XML文件內(nèi)容,只修改用戶校驗規(guī)則即可對XML文件內(nèi)容的進行校驗,從而使用戶只需關(guān)注校驗規(guī)則的書寫,不用擔心XML文件邏輯會改變。實施例2如圖2所示,本實施例提供了一種XML文件的校驗方法,該方法包括S201 用戶設(shè)置待校驗XML文件的校驗規(guī)則;其中,所述校驗規(guī)則可以采用任何現(xiàn)有的程序語言進行編寫,優(yōu)選的,用戶可采用 XML或Xpath編寫該校驗規(guī)則。其中,Xpath是一門在XML文件中查找信息的語言。XPath用于在XML文件中通過元素和屬性進行導航。S202 獲取用戶設(shè)置的校驗規(guī)則;具體的,獲取用戶為待校驗的XML文件編寫的校驗規(guī)則。其中,XML文件由標記、 元素、屬性組成,例1為一XML文件,以例1為例,該文件中標記、元素、屬性為標記左尖括號“〈”和右尖括號“〉”之間的文本。標記分為開始標記,如<Name> 和結(jié)束標記,如</Name> ;元素開始標記和結(jié)束標記之間的所有的內(nèi)容。如即<Name>和</Name>包含兩個子兀素:<FirstName> 禾口 <LastName> ;屬性一個元素的開始標記中的“名稱——值”對。如City是標記User中元素的屬性。例 1 〈User City=" Beijing" ><Name><FirstName>Xiao</FirstName><LastName>Ming</LastName></Name><Sex>Male</Sex><Age>22</Age></User>針對例1所示的XML文件,其校驗規(guī)則可以為標記Name的父標記是her,且父標記User的屬性為City = “ Beijing"S203 判斷所述校驗規(guī)則是否為XML文件格式的文件,如果不是,則將所述校驗規(guī)則轉(zhuǎn)換成XML文件格式的文件;具體的,通過設(shè)置語言轉(zhuǎn)換數(shù)據(jù)庫,將該校驗規(guī)則轉(zhuǎn)換成XML文件格式的文件。
其中,判斷所述校驗規(guī)則是否為XML文件格式的文件,不是XML文件格式的校驗規(guī)則轉(zhuǎn)換XML文件格式的文件現(xiàn)有技術(shù),本領(lǐng)域技術(shù)人員很容易實現(xiàn),具體方法此處不再贅述。本實施例對校驗規(guī)則的編寫語言不進行限制,可使不同程序語言領(lǐng)域的技術(shù)人員通過本是實施例提供的XML文件的校驗方法,編寫XML文件的校驗規(guī)則對XML文件的進行校驗,擴大了本實施例所提供XML文件校驗方法的使用范圍。S204 根據(jù)所述校驗規(guī)則,生成Xpath匹配查詢文件;具體的,根據(jù)該校驗規(guī)則,生成Xpath匹配查詢文件的xsl template匹配文件以及xsl: if測試條件。xsl:template匹配文件中的match屬性對應(yīng)于XML規(guī)則文件中的 rule的context屬性值;xsl if測試條件用于匹配待校驗文件的每個元素,對應(yīng)于xml規(guī)則文件中的import的test屬性值。其中,該校驗規(guī)則的Xpath文件,用于在待校驗的XML文檔中導航,查找XML文檔中與該校驗規(guī)則匹配的部分,即與xsktemplate匹配模塊以及xsl if測試條件匹配的部分?,F(xiàn)有技術(shù)中,XSL樣式表由一個或多套被稱為模板template的規(guī)則組成。每個模板含有當某個指定的節(jié)點被匹配時所應(yīng)用的規(guī)則。<xsl:template〉元素用于構(gòu)建模板。 match屬性用于關(guān)聯(lián)XML元素和模板。match屬性也可用來為整個文檔定義模板。match屬性的值是XPath表達式現(xiàn)有技術(shù)中,本領(lǐng)域技術(shù)人員根據(jù)該校驗規(guī)則,可很容易生成該校驗規(guī)則對應(yīng)的 xsl: template匹配模塊以及xsl if測試條件,并由所述校驗規(guī)則對應(yīng)的xsl template匹配模塊和xsl if測試條件生成該校驗規(guī)則的Xpath文件,具體方法此處不再贅述。S205 根據(jù)所述校驗規(guī)則,生成所述XSL校驗文件中的XSLT轉(zhuǎn)換文件;具體的,根據(jù)所述XSL校驗文件中的所述Xpath匹配查詢文件在所述待校驗XML 文件中查尋與所述校驗規(guī)則匹配的部分;根據(jù)XSL校驗文件中的所述XSLT轉(zhuǎn)換文件對所述匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)^ ο其中,校驗規(guī)則的XSLT文件,用于通過Xpath文件在待校驗的XML文件中導航查找到的,待校驗XML文件中與該校驗規(guī)則匹配的部分轉(zhuǎn)換輸出。現(xiàn)有技術(shù)中,本領(lǐng)域技術(shù)人員可很容易根據(jù)所述校驗規(guī)則,生成所述校驗規(guī)則的 XSLT文件,具體方法此處不再贅述。S206 根據(jù)Xpath匹配查詢文件和XSLT轉(zhuǎn)換文件生成XSL校驗文件?,F(xiàn)有技術(shù)中,本領(lǐng)域技術(shù)人員可很容易根據(jù)Xpath匹配查詢文件和XSLT轉(zhuǎn)換文件生成XSL校驗文件,具體方法此處不再贅述。S207 根據(jù)所述XSL校驗文件中的所述Xpath匹配查詢文件在所述待校驗XML文件中查尋與所述校驗規(guī)則匹配的部分;具體的,從所述待校驗XML文件的根節(jié)點開始遍歷所述待校驗XML文件,通過該校驗規(guī)則的Xpath文件,在待校驗的XML文件中導航,查找待校驗XML文件中與Xpath文件中 xsl template匹配模塊以及xsl if測試條件匹配的部分,當所述待校驗XML文件中存在與 Xpath文件中的xsl template匹配模塊以及xsl if測試條件匹配的部分時,XSLT文件輸出所述待校驗XML文件中與所述Xpath文件匹配的部分,提示用戶該部分與其設(shè)置的校驗規(guī)則匹配。S208 根據(jù)XSL校驗文件中的所述XSLT轉(zhuǎn)換文件對所述匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)果;具體的,XSLT轉(zhuǎn)換文件將待校驗XML文件中與Xpath文件匹配的部分轉(zhuǎn)換為XML 格式轉(zhuǎn)換結(jié)果。優(yōu)選的,該轉(zhuǎn)換結(jié)果中記錄著匹配部分的位置,該位置指明匹配部分在待校驗XML 文件中的位置。現(xiàn)有技術(shù)中,當待校驗XML文件中存在與Xpath文件匹配的部分時,通過XSLT文件輸出該匹配部分是現(xiàn)有技術(shù),本領(lǐng)域技術(shù)人員可很容易根據(jù)XSLT文件輸出所述XML文件中與所述Xpath文件匹配的部分具體方法此處不再贅述。S209 根據(jù)轉(zhuǎn)換結(jié)果輸出校驗結(jié)果。具體的,提取轉(zhuǎn)換結(jié)果中用戶關(guān)注的信息,如錯誤級別,提示文字等,同時根據(jù)轉(zhuǎn)換結(jié)果中記錄的匹配部分的位置,在待校驗文檔相應(yīng)位置顯示校驗結(jié)果,提示用戶該部分為符合其設(shè)置的校驗規(guī)則?,F(xiàn)有技術(shù)中,當待校驗XML文件中存在與Xpath文件匹配的部分時,通過XSLT文件輸出該匹配部分是現(xiàn)有技術(shù),本領(lǐng)域技術(shù)人員可很容易根據(jù)XSLT文件輸出所述XML文件中與所述Xpath文件匹配的部分具體方法此處不再贅述。現(xiàn)以例2為例,對根據(jù)本實施例提供方法實現(xiàn)對例2所示XML文件進行校驗做簡要描述例 2 用戶設(shè)置的校驗規(guī)則為用于校驗layout:panel的closable屬性只適用于外層容器layouttabLayout由上述校驗規(guī)則生成的校驗XSL文件片段,該片段為XSL文件中的描述校驗規(guī)則的Xpath文件部分<rule context =〃 layout:panel" ><variable name = " ancestor " >ancestor:: layout:tabLayout[1]</ variable)<report test = " Oclosable and not($ancestor)" ><href></href><severity>warning</severity)<message>…</message>〈/report〉</rule>待校驗XML文件片段<w:page title=" Insert title here" ><layout: tabLayoutXlayout:panel closable = " true " />
7
</layouttabLayout><layoutborderLayout><layout:panelonactivate =" tabl “ /></layout:borderLayout></w:page>根據(jù)上述XSL校驗文件對該待校驗XML文件進行校驗的校驗結(jié)果為Layoutipanel 的 onactivate 屬性只適用于夕卜層容器 tablayouto本實施例通過生成所述校驗規(guī)則對應(yīng)的XSL校驗文件,根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,實現(xiàn)了無需修改XML文件內(nèi)容,只修改用戶校驗規(guī)則即可對XML文件內(nèi)容的進行校驗,從而使用戶只需關(guān)注校驗規(guī)則的書寫,不用擔心XML文件邏輯會改變。實施例3如圖3所示,本實施例提供了一種XML文件的校驗裝置,該裝置包括校驗規(guī)則獲取模塊301,用于獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則;XSL校驗文件生成模塊302,用于生成該校驗規(guī)則對應(yīng)的XSL校驗文件;待校驗的XML文件獲取模塊303,用于獲取該待校驗的XML文件;校驗結(jié)果輸出模塊304,用于根據(jù)該XSL校驗文件對該待校驗的XML文件進行校驗,輸出校驗結(jié)果。格式轉(zhuǎn)換模塊305,用于判斷該校驗規(guī)則是否為XML格式,如果不是,則將該校驗規(guī)則轉(zhuǎn)換成XML格式。
文件;
XSL校驗文件生成模塊302具體包括;
Xpath匹配查詢文件生成單元3021,用于根據(jù)所述校驗規(guī)則,生成Xpath匹配查詢
XSLT轉(zhuǎn)換文件生成單元3022,用于根據(jù)所述校驗規(guī)則,生成XSLT轉(zhuǎn)換文件; XSL校驗文件生成單元3023,用于根據(jù)所述Xpath匹配查詢文件和所述XSLT轉(zhuǎn)換文件生成XSL校驗文件。校驗結(jié)果輸出模塊304具體包括規(guī)則匹配單元3041,用于根據(jù)該XSL校驗文件中的該Xpath匹配查詢文件在該待校驗XML文件中查尋與該校驗規(guī)則匹配的部分;匹配轉(zhuǎn)換單元3042,用于根據(jù)XSL校驗文件中的該XSLT轉(zhuǎn)換文件對該匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)果;校驗結(jié)果輸出單元3043,用于根據(jù)轉(zhuǎn)換結(jié)果輸出校驗結(jié)果。本實施例通過生成所述校驗規(guī)則對應(yīng)的XSL校驗文件,根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,實現(xiàn)了無需修改XML文件內(nèi)容,只修改用戶校驗規(guī)則即可對XML文件內(nèi)容的進行校驗,從而使用戶只需關(guān)注校驗規(guī)則的書寫,不用擔心XML文件邏輯會改變。以上實施例提供的技術(shù)方案中的全部或部分內(nèi)容可以通過軟件編程實現(xiàn),其軟件程序存儲在可讀取的存儲介質(zhì)中,存儲介質(zhì)例如計算機中的硬盤、光盤或軟盤。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種XML文件的校驗方法,其特征在于,所述方法包括 獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則;生成所述校驗規(guī)則對應(yīng)的XSL校驗文件; 獲取所述待校驗的XML文件;根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,所述獲取用戶設(shè)置的所述校驗規(guī)則之后還包括判斷所述校驗規(guī)則是否為XML格式,如果不是,則將所述校驗規(guī)則轉(zhuǎn)換成XML格式。
3.根據(jù)權(quán)利要求1或2所述方法,其特征在于,所述生成所述校驗規(guī)則對應(yīng)的XSL校驗文件具體包括;根據(jù)所述校驗規(guī)則,生成Xpath匹配查詢文件; 根據(jù)所述校驗規(guī)則,生成XSLT轉(zhuǎn)換文件;根據(jù)所述Xpath匹配查詢文件和所述XSLT轉(zhuǎn)換文件生成XSL校驗文件。
4.根據(jù)權(quán)利要求3所述方法,其特征在于,所述根據(jù)所述XSL校驗文件對所述待校驗的 XML文件進行校驗,輸出校驗結(jié)果具體包括根據(jù)所述XSL校驗文件中的所述Xpath匹配查詢文件在所述待校驗XML文件中查尋與所述校驗規(guī)則匹配的部分;根據(jù)XSL校驗文件中的所述XSLT轉(zhuǎn)換文件對所述匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)果; 根據(jù)轉(zhuǎn)換結(jié)果輸出校驗結(jié)果。
5.一種XML文件的校驗裝置,其特征在于,所述裝置包括校驗規(guī)則獲取模塊,用于獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則; XSL校驗文件生成模塊,用于生成所述校驗規(guī)則對應(yīng)的XSL校驗文件; 待校驗的XML文件獲取模塊,用于獲取所述待校驗的XML文件; 校驗結(jié)果輸出模塊,用于根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果。
6.根據(jù)權(quán)利要求5所述裝置,其特征在于,所述裝置還包括格式轉(zhuǎn)換模塊,用于判斷所述校驗規(guī)則是否為XML格式,如果不是,則將所述校驗規(guī)則轉(zhuǎn)換成XML格式。
7.根據(jù)權(quán)利要求5或6所述裝置,其特征在于,所述XSL校驗文件生成模塊具體包括; Xpath匹配查詢文件生成單元,用于根據(jù)所述校驗規(guī)則,生成Xpath匹配查詢文件; XSLT轉(zhuǎn)換文件生成單元,用于根據(jù)所述校驗規(guī)則,生成XSLT轉(zhuǎn)換文件;XSL校驗文件生成單元,用于根據(jù)所述Xpath匹配查詢文件和述XSLT轉(zhuǎn)換文件生成 XSL校驗文件。
8.根據(jù)權(quán)利要求7所述裝置,其特征在于,所述校驗結(jié)果輸出模塊具體包括規(guī)則匹配單元,用于根據(jù)所述XSL校驗文件中的所述Xpath匹配查詢文件在所述待校驗XML文件中查尋與所述校驗規(guī)則匹配的部分;匹配轉(zhuǎn)換單元,用于根據(jù)XSL校驗文件中的所述XSLT轉(zhuǎn)換文件對所述匹配部分進行轉(zhuǎn)換,得到轉(zhuǎn)換結(jié)果;校驗結(jié)果輸出單元,用于根據(jù)轉(zhuǎn)換結(jié)果輸出校驗結(jié)果。
全文摘要
本發(fā)明公開了一種XML文件的校驗方法,包括獲取用戶設(shè)置的待校驗XML文件的校驗規(guī)則;生成所述校驗規(guī)則對應(yīng)的XSL校驗文件;獲取所述待校驗的XML文件;根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,輸出校驗結(jié)果。一種XML文件的校驗裝置,包括校驗規(guī)則獲取模塊;XSL校驗文件生成模塊;待校驗的XML文件獲取模塊;校驗結(jié)果輸出模塊。本發(fā)明通過生成所述校驗規(guī)則對應(yīng)的XSL校驗文件,根據(jù)所述XSL校驗文件對所述待校驗的XML文件進行校驗,實現(xiàn)了無需修改XML文件內(nèi)容,只修改用戶校驗規(guī)則即可對XML文件內(nèi)容的進行校驗,從而使用戶只需關(guān)注校驗規(guī)則的書寫,不用擔心XML文件邏輯會改變。
文檔編號G06F17/30GK102402556SQ20101028714
公開日2012年4月4日 申請日期2010年9月16日 優(yōu)先權(quán)日2010年9月16日
發(fā)明者柳容濤 申請人:深圳市金蝶中間件有限公司