• 如何对已经发布过的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:schema attributeFormDefault="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文件,然后重新发布即完成了模板的更新。注意你可能需要重新为其指定签名。

  • 相关阅读:
    js对象Array —— 使用.操作符和用['xxx']访问对象的区别
    JavaScript为字符串提供的一些常用方法
    ES6新增属性——,模板字符串`` 中可使用${ }代替‘+’字符串拼接
    【vue】使用vue+element搭建项目,Tree树形控件使用
    vue循环遍历List,Map,Array
    解决分页查询只能查到本页信息的问题
    vue之 js字符串驼峰和下划线互相转换
    PHP中的对象遍历技巧
    php类的复制(克隆)
    php类的自动加载
  • 原文地址:https://www.cnblogs.com/jaxu/p/2263163.html
Copyright © 2020-2023  润新知