1

私はInfoPath開発者ではありません。これは、XSLTとの最初の実際の出会いです。最近、Sharepointにアップロードされたinfopathフォームをhtmlに変換する必要があるプロジェクトに取り組む必要がありました。HTMLに入ると、サードパーティのライブラリを使用して、必要な/サポートされている形式を吐き出すことができます。

コードで行うこと:

  1. XslCompiledTransformオブジェクトを作成します。これは、SharePointにアップロードされたXsnを解析し、そこでXslを使用することによって行われます。View1.xslを使用します。ここでは問題は発生しません。
  2. Xmlフォームは、ストリームとして変換メソッドに返されます。変換メソッドでは、ストリームを使用して変換を適用する必要があるXmlDocumentを作成します。
  3. 次に、XmlDocumentを、StringWriterオブジェクトに入力するXmlTextWriterオブジェクトとともにtransform()メソッドに渡します。次に、StringWriterを使用してhtmlを文字列またはストリームとして提供し、それをサードパーティライブラリに渡して、PDF/MHTなどの任意の形式に変更できます...

変換後に発生する問題:

  1. DateFormattingを失います。元々1-12-2009として設定された日付は2009-1-12になります
  2. 画像が失われました。画像の代わりに、「X」が含まれる空の画像プレースホルダーが表示されます。
  3. マスター詳細セクションが失われます。
  4. すべてのhtmlコントロールが通過します。現在、htmlstreamを文字列に変換し、不要なhtmlを除外する汎用メソッドを使用しています。ドロップダウンリストで選択した値を除外するコードの一部もあります。そうすることで、htmlに「選択済み」属性がないが、ドロップダウンリストで値が選択されているというシナリオに遭遇しました。この文字列全体の構文解析は適切ではなく、ハックです。これを行うためのより良い方法はありますか?
  5. XSNファイルに複数のビューがある場合、どうすればビューを検出できますか。
  6. xmlドキュメントを渡すだけで十分な、より簡単な変換方法はありますか。XmlForm.CurrentView.Export()メソッドのように、特定のシナリオを処理できます。

任意の提案、ポインタなどをいただければ幸いです。元のXmlと、変換されたHtmlと、メソッドがクリーンアップした後に残ったHtmlを送信できてうれしいです。

前もって感謝します。

ムハンマド。

4

2 に答える 2

2

This question is rather large and vague. You will get better responses if you can cut it into smaller chunks: where exactly is what going wrong? If you identify which phase causes which problem, and ask a specific question, you're much more likely to get a response from someone that can help.

Having said that, there are some generic hints that might help get you started:

  1. Your datetime formatting issue is unlikely to be XSL related. XSLT generally doesn't do string formatting very well, so unless someone wrote a rather long and complex XSLT transform as part of your "View1.xsl", XSLT is just spitting out the date the same as it's coming in - so your date problem is probably occuring before the XSLT step.
  2. It sounds like your images are refering to broken links. The output html probably contains <img> tags with src attributes that point to locations that don't exist - find out where these images are supposed to be, and fix the links. This might be as simple as including an appropriate <base> tag in the output html.
于 2009-09-24T13:45:35.890 に答える
2

これは興味深いアイデアです。しかし、私はあなたがそれを満足のいくように機能させることは決してないと思います. xsn から取得する xsl 変換によって生成される XHTML は、InfoPath でのみ表示されるように設計されています。XHTML には、InfoPath 固有の機能が多数組み込まれています。半分は役に立つかもしれませんが、多くの壊れた、または奇妙な表示の問題に遭遇します。

たとえば、マスター/ディテール機能は xd:linkedToMaster 属性で実装されます。xd 名前空間の URI はhttp://schemas.microsoft.com/office/infopath/2003です。
この名前空間へのすべての参照 (多数あります) は、他の XHTML レンダラーでは実装されない InfoPath 固有の機能を実装します。

この実装を機能させる唯一の方法は、カスタム XHTML レンダラーで xd 名前空間が使用するすべての機能を実装することです。頑張ってください。
申し訳ありませんが、良いニュースがありません。

于 2009-09-30T23:39:09.010 に答える