張旭,劉明明,趙霏霏,鄧志光,簡(jiǎn)一帆,楊斐,田旭峰,陳起
(核反應(yīng)堆系統(tǒng)設(shè)計(jì)技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610213)
XML即可擴(kuò)展標(biāo)記語(yǔ)言,與超文本標(biāo)記語(yǔ)言(HT?ML)類似,XML也是一種標(biāo)簽式語(yǔ)言[1]。XML主要解決的問題有兩個(gè):其一是在文檔格式中引入標(biāo)準(zhǔn)的編碼認(rèn)定機(jī)制,規(guī)范了多語(yǔ)言情況下的編碼轉(zhuǎn)換問題。其二是其語(yǔ)言規(guī)則簡(jiǎn)單,適合機(jī)器處理,所以可以有較多的XML分析器存在。XML具有較為嚴(yán)謹(jǐn)?shù)恼Z(yǔ)法規(guī)則和相對(duì)于軟硬件的獨(dú)立性,這使得XML更加適合數(shù)據(jù)的存儲(chǔ)和傳遞。很多辦公軟件或工程軟件都可以使用XML進(jìn)行配置,或?qū)⑽臋n、圖紙保存為XML形式輸出[2]。
XML的設(shè)計(jì)基于自我描述的原則,標(biāo)簽本身沒有預(yù)定義,這為用戶設(shè)計(jì)一套適用于自身情況和工序流程的數(shù)據(jù)傳遞方案提供了便利,使用XM工技術(shù)實(shí)現(xiàn)數(shù)據(jù)信息在工程設(shè)計(jì)的各個(gè)階段的有效傳遞,既可以保證數(shù)據(jù)的安全準(zhǔn)確性,又可以在工程的各個(gè)階段應(yīng)用二次開發(fā)技術(shù)建立針對(duì)性更強(qiáng)的輔助工具,提高工程的效率。
諸多的工程設(shè)計(jì)軟件,如Eplan,都是以XML格式存儲(chǔ)配置信息的。對(duì)于參與人員眾多的大型工程,工程軟件的系統(tǒng)配置容易出現(xiàn)子項(xiàng)目之間、子系統(tǒng)或不同層級(jí)人員之間混亂的情況。針對(duì)這一情況,可以使用XML文檔導(dǎo)入配置信息,避免了上述混亂情況的產(chǎn)生,也可以在一定程度上實(shí)現(xiàn)項(xiàng)目用戶之間的標(biāo)準(zhǔn)化要求,降低了因?yàn)檫@種不必要的問題產(chǎn)生的時(shí)間和人員精力成本的損失。
在工程軟件Eplan中,配置文件分為“公司”、“工作站”、“用戶”三個(gè)層面,分別在從大到小的三個(gè)層級(jí)對(duì)軟件的使用配置進(jìn)行從整體到細(xì)節(jié)的說(shuō)明,例如同一工作站的不同用戶之間的“工作站”配置文檔是相同的,而“用戶”配置文檔是不同的。這有利于配置管理員對(duì)于整個(gè)項(xiàng)目乃至公司的配置文件的管理與發(fā)放工作順利進(jìn)行。
圖1是一種基于“公司-項(xiàng)目-用戶”結(jié)構(gòu)的配置文檔管理模型。公司文檔配置管理員承擔(dān)XML配置文件的制作、判定其是否屬于公司級(jí)配置文件的工作;項(xiàng)目配置管理員承擔(dān)其所在項(xiàng)目的配置文件篩選、錯(cuò)誤分配糾正的工作;用戶自身作為用戶級(jí)配置文件管理員,承擔(dān)篩選符合自身需要的配置文件以及錯(cuò)誤糾正工作。多級(jí)串聯(lián)的模型保證了每一份配置文件都能被有效識(shí)別,不會(huì)被忽略。
圖1 基于XML的公司-項(xiàng)目-用戶配置文檔管理模型
圖2 Eplan配置對(duì)話框
圖2是Eplan軟件的配置對(duì)話框,在這里可以通過(guò)導(dǎo)入XML文檔的方式對(duì)屬性進(jìn)行配置。在XML文檔中,部分標(biāo)簽及屬性的結(jié)構(gòu)關(guān)系如圖3所示。對(duì)比兩圖可以找的配置文件與勾選及下拉條結(jié)合的配置方式的對(duì)應(yīng)關(guān)系。例如,在“導(dǎo)線制備”選項(xiàng)中的“CadCa?bel”選項(xiàng)卡分別對(duì)應(yīng)XML文檔的
其他配置文檔道理類似,通過(guò)XML格式嚴(yán)謹(jǐn)?shù)慕Y(jié)構(gòu)式語(yǔ)言,將所要配置的信息分門別類導(dǎo)入工程軟件中,按照需要規(guī)范項(xiàng)目或團(tuán)隊(duì)之間配置數(shù)據(jù)一致,從源頭實(shí)現(xiàn)設(shè)計(jì)的標(biāo)準(zhǔn)化要求。
圖3 XML文檔中公司項(xiàng)配置文檔結(jié)構(gòu)
一些常見的工程繪圖軟件如MS Visio等,其圖紙也可以通過(guò)XML格式進(jìn)行儲(chǔ)存,這樣也有利于后期進(jìn)行圖中的元件屬性的查詢、統(tǒng)計(jì)等操作[3],MS Visio的層級(jí)關(guān)系是,以VisioDocumet為根標(biāo)記,以下是Sheet(表)、Section(節(jié))、Row(行)、Cell(單元格)等組成的層級(jí)關(guān)系樹狀結(jié)構(gòu)。一級(jí)子節(jié)點(diǎn)中最重要的包括“StyleSheets”、“Pages”、“Masters”等,分別用來(lái)定義文檔的主體樣式、頁(yè)面屬性、主控形狀等屬性。對(duì)于繪圖中最重要的組成,即元件,由Shape節(jié)點(diǎn)進(jìn)行描述。這些節(jié)點(diǎn)在另一種常見的MS Visio的二次開發(fā)途徑“Shapesheet”中,都能找的對(duì)應(yīng)的屬性。例如,XML文檔中的標(biāo)簽“Line”、“Fill”分別對(duì)應(yīng) ShapeSheet中的“Line Format Section”、“Fill Format Section”分別表示線性和填充的屬性;ShapeSheet中的“Shape Transform Section”、“Text Transform Section”,分別對(duì)應(yīng) XML 文檔中的“XForm”、“TextXForm”。另外,MS Visio 還具有單元格級(jí)節(jié)點(diǎn)中的屬性基本上都以公式形式來(lái)定義的特點(diǎn),這使得開發(fā)者可以比較清楚地看到單元格之間的關(guān)系,在定義新變量時(shí)可以依據(jù)它與當(dāng)前的各個(gè)量的關(guān)系,定義其公式。
(1)文件表觀質(zhì)量
Word作為Microsoft Office的成員之一,在底層層面上,可以看作是基于XML的數(shù)據(jù)信息存儲(chǔ)方式、MS Word自定義標(biāo)簽的解析方式與VBA的開發(fā)平臺(tái)等部分的結(jié)合。在工程設(shè)計(jì)過(guò)程中,MS Word一般用于規(guī)范、文件手冊(cè)、技術(shù)方案說(shuō)明等以文字為主的文件的編寫過(guò)程。此類文件作為工程項(xiàng)目的基礎(chǔ)性文件,其格式的規(guī)范性一般稱為文件的表觀質(zhì)量。較高的表觀質(zhì)量也關(guān)系到工程項(xiàng)目的嚴(yán)肅性和嚴(yán)謹(jǐn)性。建立一套基于XML的文檔質(zhì)量檢查系統(tǒng),對(duì)于提升文件的表觀質(zhì)量具有很大的幫助。
(2)MS Word的XML形式
MS Word的XML文檔存儲(chǔ)方式由一系列標(biāo)簽構(gòu)成樹狀結(jié)構(gòu)構(gòu)成體系,圖4中體現(xiàn)了其中的部分標(biāo)簽處于整個(gè)體系中的位置。
圖4 XML文檔的樹狀結(jié)構(gòu)(部分)
(3)文件表觀質(zhì)量檢查系統(tǒng)的構(gòu)建
應(yīng)用VBA、C#、Python等語(yǔ)言可以對(duì)XML文檔進(jìn)行解析,通過(guò)其中對(duì)于文件格式樣式描述的標(biāo)簽,對(duì)文件的表觀質(zhì)量進(jìn)行檢查。通過(guò)正則語(yǔ)句的方式,可以對(duì)文件內(nèi)容進(jìn)行更加智能的檢查。例如數(shù)字“0”和英文字母“O”的區(qū)分等較為常見而人工檢查又不易發(fā)現(xiàn)的問題。
解析MS Word的XML文件的關(guān)鍵在于父子節(jié)點(diǎn)關(guān)系的梳理[4]。以C#語(yǔ)言為例,需添加引用using Sys?tem Xml;
創(chuàng)建類型聲明節(jié)點(diǎn):
XmlDocument xml= new XmlDocumen();
XML文檔的載人方法如下:
xmlLoad("…xml);
定義XmlElement類:
XmlElement xmlElement= xml.DccumentElement;
獲取頂層節(jié)點(diǎn)的列表:
XmlNodelist nodeList=xmlElement.ChildNodes遍歷所有子節(jié)點(diǎn)的方法:foreach(XmlNode item in nodeList){…}
遍歷某個(gè)元素的屬性:
for(int i=0;i {…} 通過(guò)對(duì)XML文檔的解析,可以獲得MS Word的格式樣式信息。與標(biāo)準(zhǔn)格式配置庫(kù)進(jìn)行比較,可以找到文檔中表觀質(zhì)量不合格之處,并予以記錄[5]。其具體過(guò)程如圖2所示。Word文檔編寫后,通過(guò)自動(dòng)化工具,由Word文檔生成XML文檔,并進(jìn)行容錯(cuò)性檢查[6]。如果通過(guò)容錯(cuò)性檢查,再由自動(dòng)化工具進(jìn)行XML樹狀結(jié)構(gòu)的解析。檢查分為兩個(gè)部分,即頁(yè)面基本信息檢查和正則匹配檢查。其中,頁(yè)面基本信息檢查內(nèi)容包括最基本的頁(yè)面設(shè)置、字體設(shè)置、行間距設(shè)置,等等,正則匹配檢查內(nèi)容較為復(fù)雜,而且可以隨時(shí)在庫(kù)中添加,包括: (1)該公司或該項(xiàng)目常見的英文縮寫檢查; (2)數(shù)學(xué)單位用去錯(cuò)誤,例如“4-20mA電流信號(hào)”應(yīng)寫作“4mA-20mA電流信號(hào)”、以km為單位時(shí),數(shù)值達(dá)到十萬(wàn)以上,等等; (3)通過(guò)上下文語(yǔ)境,進(jìn)行英文字母“o”、“l(fā)”與數(shù)字“0”、“1”的誤用情況檢查,等等; 兩種檢查方式還可以通過(guò)人工的方式進(jìn)行復(fù)查,復(fù)查的方式可以是排查,也可以是抽查。對(duì)于發(fā)現(xiàn)的“誤動(dòng)作”和“拒動(dòng)作”,如果屬于基本頁(yè)面信息檢查,則應(yīng)該詳細(xì)排查錯(cuò)誤產(chǎn)生的原因;如果屬于正則表達(dá)式判斷方式,則應(yīng)該修正正則表達(dá)式的集合。兩種錯(cuò)誤都應(yīng)該記入錯(cuò)誤記錄,并提醒編寫人員注意修改。同時(shí),出現(xiàn)頻率最高的幾種錯(cuò)誤,應(yīng)記入常見錯(cuò)誤記錄,形成手冊(cè),并注意對(duì)文檔編寫人員宣貫。進(jìn)行頁(yè)面信息檢查的依據(jù)來(lái)自標(biāo)準(zhǔn)Word樣式庫(kù)的XML格式庫(kù),其依據(jù)是文檔質(zhì)保人員編寫的標(biāo)準(zhǔn)Word樣式庫(kù),以確保評(píng)判正確與否的標(biāo)準(zhǔn)的唯一性[7]。 大數(shù)據(jù)挖掘技術(shù)與人工智能技術(shù)在工程中的應(yīng)用是現(xiàn)今的研究熱點(diǎn)和未來(lái)的發(fā)展趨勢(shì)。Python語(yǔ)言是數(shù)據(jù)挖掘、人工智能算法中最常用的語(yǔ)言之一。大數(shù)據(jù)積累和挖掘的基礎(chǔ)包括數(shù)據(jù)采集和可供分析的高質(zhì)量的數(shù)據(jù)存儲(chǔ)方式兩方面。通過(guò)工業(yè)過(guò)程的數(shù)字化程度的提高以及傳感器技術(shù)的發(fā)展,對(duì)于數(shù)據(jù)的采集問題將逐步得到解決。如前文所述,大量的各階段的工程數(shù)據(jù)以XML格式儲(chǔ)存,這種標(biāo)準(zhǔn)格式化的存儲(chǔ)方式為數(shù)據(jù)挖掘帶來(lái)了便利,XML文件中的數(shù)據(jù),在用Py?thon語(yǔ)言解析之后可以用于設(shè)計(jì)過(guò)程的優(yōu)化、數(shù)據(jù)規(guī)律的挖掘等。Python具有多種解析XML的方法,包括SAX(Simple API for XML)、DOM(Document Objet Mod?el)、ElementTree等方法。這幾種方法適用的情況需要使用者在具體的項(xiàng)目中具體實(shí)踐,以尋求最佳的方案。 (1)SAX方法 SAX是一種用于處理XML事件驅(qū)動(dòng)的模型,Py?thon的標(biāo)準(zhǔn)庫(kù)中就有SAX的解析器。當(dāng)文件較大時(shí),由于SAX采用掃描與解析同時(shí)進(jìn)行的方式,可以減少對(duì)系統(tǒng)內(nèi)存的要求,SAX方法將具有更大的優(yōu)勢(shì)。 (2)DOM 方法 DOM(文件對(duì)象模型)是一種標(biāo)準(zhǔn)的處理可擴(kuò)展編程語(yǔ)言的接口。Python語(yǔ)言中的xml.dom.minidom可以便捷地解析XML文件。利用DOM建立的樹狀結(jié)構(gòu),Python可以通過(guò)對(duì)樹狀結(jié)構(gòu)中的節(jié)點(diǎn)與節(jié)點(diǎn)間的關(guān)系,進(jìn)行信息的查詢。 (3)ElementTree方法 ElementTree方法與DOM方法類似,使用Element?Tree類代表XML文檔,使用Element類表示XML結(jié)構(gòu)中的一個(gè)節(jié)點(diǎn)。該方法是Python處理XML的方法中相對(duì)簡(jiǎn)單的方法。 建立一套基于XML的數(shù)據(jù)信息傳遞和處理體系,有助于建立從工程設(shè)計(jì)項(xiàng)目的起始階段到設(shè)計(jì)過(guò)程終了,乃至未來(lái)數(shù)據(jù)挖掘階段的數(shù)字化管理過(guò)程。在最初的項(xiàng)目文件配置與配置文檔分發(fā)階段,利用XML技術(shù),能夠提高文檔配置的準(zhǔn)確性并提高效率。在文件表觀質(zhì)量檢查階段,利用XML技術(shù)能夠讀取文檔格式屬性,并與可實(shí)時(shí)更新的標(biāo)準(zhǔn)樣式庫(kù)進(jìn)行比較,發(fā)現(xiàn)文檔的格式錯(cuò)誤。在積累了大量數(shù)據(jù)之后的數(shù)據(jù)挖掘階段,利用XML技術(shù),結(jié)合Python語(yǔ)言編寫的讀取分析數(shù)據(jù)的程序與智能算法程序,可以對(duì)整個(gè)項(xiàng)目的結(jié)構(gòu)、薄弱之處進(jìn)行優(yōu)化,給出改進(jìn)的建議,以此進(jìn)一步實(shí)現(xiàn)項(xiàng)目的數(shù)字化管理,當(dāng)然XML的使用也有一定的缺點(diǎn),XML的解析使信息密度低,同樣的信息量需要的文本長(zhǎng)度更長(zhǎng),可讀性降低,因此在使用過(guò)程中也要綜合考慮以后按需使用。2.4 工程大數(shù)據(jù)積累與數(shù)據(jù)挖掘
3 結(jié)語(yǔ)