式ボックスをリッチ テキスト フィールドにバインドしたときに、書式設定およびリッチ コンテンツがすべて失われ、1 行のプレーンテキスト文字列だけになって驚いたことがあるかもしれません。リッチ コンテンツは、ビューの .xsl ファイルを手動で少し変更するだけで表示できるようになります。
このタスクでは、リッチ テキスト フィールドにバインドした式ボックスに、リッチ コンテンツを表示できるようにします。また、この変更の結果として発生する可能性がある問題とその対応についても説明します。まず、新しい空白のフォームを作成しておきます。
リッチ テキスト ボックスを作成し、式ボックスをバインドする
- [Controls] 作業ウィンドウを開きます。
- ビューにリッチ テキスト ボックスを挿入します。
- [Data Source] 作業ウィンドウで、[field1] を右クリックし、[Expression Box] をクリックします。
- 式ボックスの幅を変更して、その上にあるリッチ テキスト ボックスと同じにします。
確認
- フォームをプレビューします。
- リッチ テキスト フィールドに任意のリッチ コンテンツを追加し、フィールドの外をクリックして、コンテンツをバインドします。

図 1 リッチ テキスト ボックスにバインドされた式ボックスにはリッチ コンテンツは表示されません。
図 1 でわかるように、式ボックスにはリッチ コンテンツは表示されません。これは、InfoPath では、式ボックスの作成時に、バインドされるフィールドのデータ型が考慮されず、代わりに XSL で常に xsl:value-of 要素が使用されるからです。xsl:value-of 要素は、その選択結果を string() 関数を呼び出すことによって文字列に変換します。リッチ コンテンツの使用を可能にするには、xsl:copy-of 要素を使用するように変更する必要があります。
式ボックスにリッチ コンテンツを表示するようにビューの .xsl ファイルを変更する
- [File] メニューの [Extract Form Files] をクリックします。
- 取り出したフォーム構成ファイルの保存先を選択し、[OK] をクリックします。
- InfoPath を終了して、フォーム構成ファイルに対するロックを解除します。
- テキスト エディタを使用して、ビューの .xsl ファイルを開きます。
- テキスト「ExpressionBox」を検索して、式ボックス コントロールを表す span 要素を探します。
- 次のような行があります (日本語環境では "my:field1" は "my:フィールド1" です)。
<xsl:value-of select="my:field1"/> |
これを次のように変更します (日本語環境では "my:field1" は "my:フィールド1" です)。
<xsl:copy-of select="my:field1/node()"/> |
- ビューの .xsl ファイルを保存し、テキスト エディタを閉じます。
- manifest.xsf ファイルを右クリックし、[Design] をクリックして、フォーム テンプレートを再度開きます。
確認
- フォームをプレビューします。
- リッチ テキスト フィールドに任意のリッチ コンテンツを追加し、フィールドの外をクリックして、コンテンツをバインドします。

図 2 変更された XSL では式ボックスにリッチ コンテンツを表示できます。
図 2 に示すように、XSL に対する変更により、式ボックスにリッチコンテンツを表示できるようになりました。お気づきかもしれませんが、式ボックスのコンテンツ上にマウスを移動すると、ボックスの周囲に青い罫線が表示されます。式ボックスには、このような特性はないので、これは通常は望ましくない効果です。
InfoPath には問題があり、式ボックスとリッチ テキスト ボックスが同じビューの同じフィールドにバインドされている場合に、リッチコンテンツを表示するように変更された式ボックス上にマウスを移動すると、この青い罫線が表示されます。マウスを移動してもこの罫線が表示されないようにするには、式ボックスをリッチ テキスト ボックスと同じビューに表示しないようにします。2 つのコントロールが別々のビューにある場合、このホバー効果は発生しません。
©2005 Greg Collins. All rights reserved. Licensed to Autonomy Systems, LLC for display on InfoPathDev.com.