2

InfoPathフォームコンポーネントを備えたASP.NETアプリケーションがあり、InfoPathFormsServerを使用してInfoPathフォームをブラウザーに配信します。フォームをSharePointに保存するのではなく、XMLフォームデータをASP.NET Webサービスに送信します。ASP.NETWebサービスは、SQL Server 2005でデータをXMLデータ型として保存します。これは正常に機能しており、XMLデータの読み込みに問題はありません。 InfoPathフォームに戻ります。

この問題は、古いデータ(フォームのバージョン1から)を新しいバージョンのフォーム(バージョン2)にロードしようとしたときに発生します。この新しいバージョンのフォーム(V2)には、たとえば、新しいテキストボックスフィールドがあります。V2フィールドはV1XMLに存在しないため、V2フォームに表示されますが、無効になっており、入力できません。

私たちの質問は、V1 XMLデータをV2フォームにロードし、ユーザーがフォームのV2に現在存在するフィールドに入力できるようにする方法です。

この動作は、InfoPathFormsServerおよびフォームライブラリに保存されているフォームを使用して実行できます。フォームテンプレートを更新すると、新しいテンプレートで古いフォームを開いたり、新しいフィールドを表示したり、新しいフィールドにデータを保存したりできます。フォームXMLデータがフォームライブラリではなくSQLServerに格納されている場合、プログラムでそれを行う方法を知る必要があります。

4

1 に答える 1

1

私が InfoPath を使ってからしばらく経っているので、これが少しあいまいなことをお詫びします。

InfoPath テンプレートの一部 (拡張子が異なる ZIP アーカイブにすぎません) は、"upgrade.xsl" というファイルです。このファイルには、以前のスキーマ バージョンを対象とするドキュメントを「アップグレード」する 1 つ以上の XSL 変換が含まれています。

問題は、あるシナリオ (SharePoint/フォーム ライブラリ) では正しい変換が適用され、他のシナリオ (Web サービス) では適用されないのはなぜですか? 2 番目のプロセスは、ソース ドキュメントが対象としているスキーマのバージョンを知るために InfoPath が使用するタグを失う可能性がありますか? 私が参照しているタグは "?mso-infoPathSolution" タグ ("solutionVersion" 属性) だと思います。

このタグが実際にドキュメントから取り除かれている場合 (そしてそれを簡単に防止できない場合)、適切な XSL 変換を「手動で」適用する必要がある場合があります。もちろん、扱っているバージョンが複数ある場合は、どのような場合にどの変換を適用する必要があるかを判断するのが難しい場合があります。

于 2009-03-25T19:32:05.297 に答える