如何对已经发布过的InfoPath模板进行修改
設計完InfoPath模板之后,需要將其發布到一個公共的地方(如公共網絡上),用戶可以下載該模板填寫內容然后生成固定格式的XML數據文件。一個復雜的InfoPath模板可以包含一個主數據源(Schema文件)或多個輔助數據源,并且其中還可能包括VSTA(Visual Studio Tools for Application)所生成的代碼。InfoPath模板源文件和已經發布過的模板文件后綴相同(均為.xsn),但是對于一個已經發布過的InfoPath模板文件而言,由于缺少對應的源代碼(包括原始schema文件、輔助數據源文件、VSTA源代碼等等),我們很難對其進行重新設計。有什么好的方法可以實現這一點呢?
答案是肯定的!
首先,在公共網絡上找到已經發布過的InfoPath模板xsn文件并下載到本地。右鍵點擊xsn文件選擇Design,然后你可以重新對InfoPath模板的界面進行修改,但無法直接修改主數據源的schema。退出設計模式,將xsn文件的后綴直接改成cab,雙擊打開,你可以看到里面包含了許多你所需要的文件,包括manifest.xsf文件(InfoPath Form的定義文件),主數據源的schema文件,view1.xsl界面定義文件,template.xml,sampledata.xml,以及其它輔助數據源文件和第三方提供的控件,VBTA所編譯的.dll文件等。
幾乎所有的定義文件都能手動修改,你可以直接將cab文件中需要修改的文件拖放到其它位置手動進行修改,然后設計xsn文件重新指定這些修改過的文件。或者也可以將cab文件中所有的文件拖放到一個新的文件夾中,然后修改需要的文件,右鍵點擊manifest.xsf文件,選擇Design,將InfoPath另存為一個新的文件。注意,如果你重新定義過主數據源的schema文件,則需要在InfoPath設計中查看控件的綁定情況,確保所有的控件綁定是正確的。如果需要修改XML節點的前綴,則需要同時修改manifest.xsf,view1.xsl,template.xml和主數據源的schema文件。
在schema定義文件中,屬性attributeFormDefault規定了所生成的XML節點的屬性是否必須定義前綴,值為unqualified不需要,值為qualified需要;屬性elementFormDefault規定了所生成的XML節點是否必須定義前綴,值為unqualified不需要,值為qualified需要。如下面的代碼:
<xs:schemaattributeFormDefault="unqualified"elementFormDefault="qualified" targetNamespace="http://www.jaxu.com"xmlns:j="http://www.jaxu.com">
</xs:schema>
屬性targetNameSpace規定了所生成的XML節點或屬性的前綴所對應的命名空間,該命名空間必須與后面指定的命名空間定義具有相同的URI。對于前綴的指定,在manifest.xsf,view1.xsl和template.xml文件中必須具有相同的URI。也就是說,如果你想要修改InfoPath所生成的XML文件中節點或屬性的前綴,則這四個文件中的前綴定義均要修改成一致。
dll文件不能直接修改。不過你可以反編譯并重新創建VSTA工程。
修改完后,重新打包并設計InfoPath文件,然后重新發布即完成了模板的更新。注意你可能需要重新為其指定簽名。
總結
以上是生活随笔為你收集整理的如何对已经发布过的InfoPath模板进行修改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DOM(二)——XML DOM
- 下一篇: ubuntu无密码登录