私はInfoPath開発者ではありません。これは、XSLTとの最初の実際の出会いです。最近、Sharepointにアップロードされたinfopathフォームをhtmlに変換する必要があるプロジェクトに取り組む必要がありました。HTMLに入ると、サードパーティのライブラリを使用して、必要な/サポートされている形式を吐き出すことができます。
コードで行うこと:
- XslCompiledTransformオブジェクトを作成します。これは、SharePointにアップロードされたXsnを解析し、そこでXslを使用することによって行われます。View1.xslを使用します。ここでは問題は発生しません。
- Xmlフォームは、ストリームとして変換メソッドに返されます。変換メソッドでは、ストリームを使用して変換を適用する必要があるXmlDocumentを作成します。
- 次に、XmlDocumentを、StringWriterオブジェクトに入力するXmlTextWriterオブジェクトとともにtransform()メソッドに渡します。次に、StringWriterを使用してhtmlを文字列またはストリームとして提供し、それをサードパーティライブラリに渡して、PDF/MHTなどの任意の形式に変更できます...
変換後に発生する問題:
- DateFormattingを失います。元々1-12-2009として設定された日付は2009-1-12になります
- 画像が失われました。画像の代わりに、「X」が含まれる空の画像プレースホルダーが表示されます。
- マスター詳細セクションが失われます。
- すべてのhtmlコントロールが通過します。現在、htmlstreamを文字列に変換し、不要なhtmlを除外する汎用メソッドを使用しています。ドロップダウンリストで選択した値を除外するコードの一部もあります。そうすることで、htmlに「選択済み」属性がないが、ドロップダウンリストで値が選択されているというシナリオに遭遇しました。この文字列全体の構文解析は適切ではなく、ハックです。これを行うためのより良い方法はありますか?
- XSNファイルに複数のビューがある場合、どうすればビューを検出できますか。
- xmlドキュメントを渡すだけで十分な、より簡単な変換方法はありますか。XmlForm.CurrentView.Export()メソッドのように、特定のシナリオを処理できます。
任意の提案、ポインタなどをいただければ幸いです。元のXmlと、変換されたHtmlと、メソッドがクリーンアップした後に残ったHtmlを送信できてうれしいです。
前もって感謝します。
ムハンマド。