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


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2011/11/25/2263163.html,如需转载请自行联系原作者


相关文章
|
JavaScript 前端开发
分享24个JS特效广告和66个JS特效在线客服J代码JS代码
分享24个JS特效广告和66个JS特效在线客服J代码JS代码
199 1
|
JSON JavaScript 前端开发
前端 ex2json 用于 vue/react/js 将 xls、xlsx、csv 文件转成 json 数组
前端 ex2json 用于 vue/react/js 将 xls、xlsx、csv 文件转成 json 数组
348 0
|
JavaScript
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
2383 0
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
|
4月前
|
JavaScript API 容器
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示它在表单验证、弹窗动画、自动聚焦等场景中的实际应用。
391 17
|
监控
在 PowerShell 中获取内存使用率百分比
【8月更文挑战第27天】
343 5
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
482 0
|
12月前
|
Web App开发 数据可视化 前端开发
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
本文介绍了ECharts的基本使用和语法格式,包括如何引入ECharts、创建容器、初始化echarts实例对象、配置option参数和一些基础图表的绘制方法。文章还提供了简单图表绘制和使用图例添加的示例代码,以及对ECharts特性和优势的概述。
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
|
JavaScript 小程序 Java
【工具】用nvm管理nodejs版本切换,真香!
本文详细介绍了如何使用 nvm(node.js 版本管理工具)解决在不同项目间频繁切换 Node.js 版本的问题。通过实例展示了 A、B 两个项目分别依赖 v14.19.1 和 v16.15.0 版本时的解决方案,并提供了 nvm 的下载、安装及常用命令等实用信息,帮助读者轻松管理 Node.js 版本。文章还包括了卸载已安装的 Node.js、配置环境变量等步骤,确保切换顺畅无阻。
973 0
【工具】用nvm管理nodejs版本切换,真香!
|
JavaScript
Vue2与Vue3共存于一台电脑 保姆级教程
Vue2与Vue3共存于一台电脑 保姆级教程
1385 1
Vue2与Vue3共存于一台电脑 保姆级教程