OpenOfficeでのXFormsの作成
OpenOfficeで実装されているXFormsは、エンドユーザーが自分でデザインできる単純なフォームをターゲットにしています。以降では、OpenOfficeのデザインモードを使用してフォームを作成する方法を簡単な例で紹介しながら、XFormsの構文と、ユーザーが遭遇する一般的な問題について説明します。
最初のステップはXFormsドキュメントを作成することです。それには、OpenOffice Writerの新しいインスタンスを開き、メニューから[File]-[New]-[Xml Form Document]を選択します(図1)。
新たに作成されるXFormは通常のOpenOfficeドキュメントですが、標準では画面の左上隅に図2のようなフォームコントロール群がフロート状態で表示され、画面の右側に図3のようなパネルが表示されます。

図2のようなフォームコントロールが表示されない場合は、メニューから[View]-[Toolbars]-[Form Controls]を選択すると、フォームコントロールを有効にすることができます。
XFormを作成すると、ドキュメントはまずデザインモードになります。図2に示したフォームコントロールパネルの右上隅のアイコンをクリックすれば、デザインモードのオン/オフを切り替えることができます。
この時点でXFormの内部にはXMLデータが入っています。このXFormsインスタンスのドキュメント要素は、デフォルトのinstanceData要素です(図3を参照)。
モデルパネルでinstanceDataを右クリックし、[add element]を選択します。これにより、図4のようなフォームがポップアップします。
![図4 [Add Element]ダイアログでは、フォームのインスタンスデータに要素を追加できる 図4 [Add Element]ダイアログでは、フォームのインスタンスデータに要素を追加できる](http://cz-cdn.shoeisha.jp/static/images/article/2802/38178_figure04.jpg)
要素AddressPostalを追加します。この要素に関連付けられている名前空間がないことに注意してください。対応する名前空間が存在しない名前空間プレフィックスの付いた名前を使用すると、不適切なインスタンスを作成してしまう危険が高くなります。例えば、nameフィールドに「xkom:AddressPostal」と入力しても、ダイアログでxkomプレフィックスのバインド先の名前空間を定義するように促されることはありません。
XFormsモデルパネル(図3)には、[Instance 1]、[Submissions]、[Bindings]という3つのタブがあります。それぞれのタブのすぐ下にいくつかのアイコンがありますが、そのうちの中ほどにあるのが編集アイコンです。[Instance 1]タブでは、[Edit Element]アイコンを選択することで、選択した要素を編集できます。紛らわしいのですが、インスタンスに名前空間を追加するには、最初のタブで[Edit Element]アイコンを選択しないでください。代わりに[Submissions]タブまたは[Bindings]タブでバインディング式を編集することで名前空間を追加します。
これを行うには、[Bindings]タブを選択して、中ほどにあるバインディング編集アイコンをクリックし、ポップアップするフォームで[Binding Expression]の右にある[...]ボタンをクリックします。それにより、また別のフォームがポップアップするので、そこで[Edit Namespaces]を選択します。これでようやく、名前空間を追加するための[Namespaces for Forms]ダイアログボックスが表示されます(図5)。このフォームのリストビューに名前空間を追加し、それらをプレフィックスに関連付けることができます。
ご覧のように、名前空間を追加するためのUIは不便で直観的ではありません。本稿の例では、名前空間を追加する必要もありませんし、この部分のUIを使用する必要もありませんが、この機能に到達する方法は覚えておいた方が良いでしょう。



![図5 インスタンスに名前空間を追加するには、一連の操作を経て[Namespaces for Forms]ダイアログを表示する 図5 インスタンスに名前空間を追加するには、一連の操作を経て[Namespaces for Forms]ダイアログを表示する](http://cz-cdn.shoeisha.jp/static/images/article/2802/38178_figure05_s.gif)