将旧的XML数据加载到InfoPath表单的新版本中

时间:2009-03-25 19:04:22

标签: xml sql-server-2005 xslt infopath

我们有一个带有InfoPath表单组件的ASP.NET应用程序,使用InfoPath Forms Server将InfoPath表单提供给浏览器。我们不是将表单保​​存在SharePoint中,而是将XML表单数据提交给ASP.NET Web服务,该服务将数据保存为SQL Server 2005中的XML数据类型。这样工作正常,我们在加载XML数据时没有问题回到InfoPath表单。

当我们尝试将旧数据(从表单的第1版)加载到表单的新版本(版本2)时,我们的问题就出现了。例如,这个新版本的表单(V2)有一个新的文本框字段。由于V1 XML中不存在V2字段,因此它们在V2表单上可见,但是已禁用且无法填充。

我们的问题是如何将V1 XML数据加载到V2表单中,并让用户能够完成现在存在于表单V2中的那些字段。

使用InfoPath Forms Server和存储在表单库中的表单可以实现此行为。如果更新表单模板,则可以在新模板中打开旧表单,查看新字段,并可以在新字段中保存数据。当Form XML数据存储在SQL Server而不是表单库中时,我们需要知道如何以编程方式执行此操作。

1 个答案:

答案 0 :(得分:1)

自从我做了任何InfoPath之后已经有一段时间了,所以对此道歉有点模糊:

InfoPath模板的一部分,它几乎只是一个具有不同扩展名的ZIP存档,是一个名为“upgrade.xsl”的文件。此文件包含一个或多个XSL转换,可“升级”针对早期架构版本的文档。

问题是:为什么在一个场景(SharePoint /表单库)中应用正确的转换而在另一个场景(Web服务)中不应用?第二个进程是否可能丢失InfoPath用于了解源文档所针对的架构版本的标记?我相信我所指的标签是“?mso-infoPathSolution”标签(“solutionVersion”属性)。

如果此标记确实从文档中剥离(并且您无法轻易阻止它),则可能需要“手动”应用适当的XSL转换。当然,如果您正在处理多个版本,则可能很难确定在任何情况下都需要应用哪些转换。