Show Menu
トピック×

フォームの構造

The description of a form is a structured XML document that observes the grammar of the form schema xtk:form .
The XML document of the input form must contain the <form> root element with the name and namespace attributes to populate the form name and namespace.
<form name="form_name" namespace="name_space">
...
</form>

デフォルトでは、フォームは同じ名前と名前空間を持つデータスキーマに関連付けられます。 フォームを別の名前に関連付けるには、要素の entity -schema属性を <form> スキーマキーの名前に設定します。 入力フォームの構造を説明するには、「cus:recipient」のサンプルスキーマを使用したインターフェイスを説明します。
<srcSchema name="recipient" namespace="cus">
  <enumeration name="gender" basetype="byte">    
    <value name="unknown" label="Not specified" value="0"/>    
    <value name="male" label="Male" value="1"/>   
    <value name="female" label="Female" value="2"/>   
  </enumeration>

  <element name="recipient">
    <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/>
    <attribute name="birthDate" type="datetime" label="Date"/>
    <attribute name="gender" type="byte" label="Gender" enum="gender"/>
  </element>
</srcSchema>

サンプルスキーマに基づく入力フォーム:
<form name="recipient" namespace="cus">
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email"/>
</form>

編集コントロールの説明は、ルート要素から始 <form> まります。 An edit control is entered in an <input> element with the xpath attribute containing the path of the field in its schema.
編集コントロールは、対応するデータタイプに自動的に適応し、スキーマで定義されているラベルを使用します。
要素にlabel属性を追加すると、データスキーマで定義されたラベルをオーバ ーロードで <input> ます。 <input label="E-mail address" xpath="@name" />
デフォルトでは、各フィールドは1行に表示され、データの種類に応じて使用可能なスペースをすべて占有します。

書式設定

コントロールのレイアウトは、HTMLテーブルで使用されるレイアウトのように見えます。コントロールを複数の列に分割したり、要素をインターレースしたり、使用可能な領域の占有を指定したりできます。 ただし、形式設定では領域を縦横比で分割することしかできません。オブジェクトに固定寸法を指定することはできません。
上記の例のコントロールを2列に表示するには:
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email"/>
  </container>
</form>

colcount属 <container> 性を持つ要 素を使用すると 、2つの列に子コントロールを強制的に表示できます。
コント ロールの colspan属性は、値に入力された列数だけコントロールを拡張します。
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form> 

コンテナは type="frame"属性に値を入力することで 、子コントロールの周囲にフレームを追加し、label属性にlabelが含まれて います
<form name="recipient" namespace="cus">
  <container colcount="2" type="frame" label="General">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form>

要素を <static> 使用して、入力フォームの形式を設定できます。
<form name="recipient" namespace="cus">
  <static type="separator" colspan="2" label="General"/>
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email" colspan="2"/>
  <static type="help" label="General information about recipient with date of birth, gender, and e-mail address." colspan="2"/>
</form>

区切り <static> 文字タイプの タグで 、label属性にラベルが含まれる区切り線を追加 でき ます。
ヘルプタイプのタグを使用してヘルプテキ <static> ストが追加されました。 テキストの内容がlabel属性に入力さ れます

コンテナ

コンテナを使用すると、一連のコントロールをグループ化できます。要素によって表され <container> ます。 これらは、複数の列に対するコントロールの書式設定に使用されました。
子コ ントロー <container> ルのxpath属性を使用すると、子コントロールを簡単に参照できます。 次に、コントロールの参照は親に対する相対パスにな <container> ります。
「xpath」を含まないコンテナの例:
<container colcount="2">
  <input xpath="location/@zipCode"/>
  <input xpath="location/@city"/>
</container>

要素「location」に「xpath」を追加した例を次に示します。
<container colcount="2" xpath="location">
  <input xpath="@zipCode"/>
  <input xpath="@city"/>
</container>

コンテナのタイプ

コンテナは、ページで形式設定された一連のフィールドを使用して複雑なコントロールを作成するために使用します。

タブコンテナ

タブコンテナは、タブからアクセス可能なページのデータの形式を設定します。
<container type="notebook">
  <container colcount="2" label="General">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
  <container colcount="2" label="Location">
    ...
  </container>
</container>

メインコンテナは、 type="notebook"属性で定義します 。 タブは子コンテナ内で宣言され、タブのラベルはlabel属性から入力さ れます
style="down|up (デフォルト) "機能は、タブラベルを強制的にコントロールの下または上に配置します。 この機能はオプションです。 <container style="down" type="notebook"> ... </container>

アイコンリスト

このコンテナには、表示するページを選択できる垂直方向のアイコンバーが表示されます。
<container type="iconbox">
  <container colcount="2" label="General" img="xtk:properties.png">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
  <container colcount="2" label="Location" img="nms:msgfolder.png">
    ...
  </container>
</container>

メインコンテナは、 type="iconbox"属性で定義します 。 アイコンに関連付けられたページは、子コンテナ内で宣言されます。 アイコンのラベルは、label属性から入力さ れます
ページのアイコンは属性から入力されます。 img="<image>"``<image> は、名前と名前空間で構成されるキーに対応する画像の名前です(例:「xtk:properties.png」)。
画像はノードから使用でき Administration > Configuration > Images ます。

表示コンテナ

動的条件を使用して、一連のコントロールをマスクできます。
次の例は、「性別」フィールドの値に対するコントロールの表示/非表示を示しています。
<container type="visibleGroup" visibleIf="@gender=1">
  ...
</container>
<container type="visibleGroup" visibleIf="@gender=2">
  ...
</container>

表示コンテナは、attribute type="visibleGroup"で定義します 。 visibleIf属 性には 、表示条件が含まれます。
条件構文の例:
  • visibleIf="@email='peter.martinezATneolane.net'" :文字列型のデータに対して等価性をテストします。 比較値は引用符で囲む必要があります。
  • visibleIf="@gender >= 1 and @gender != 2'' :条件を数値に設定します。
  • visibleIf="@boolean1==trueまたは@boolean2==false" :ブール値フィールドをテストします。

コンテナの有効化

このコンテナを使用すると、動的条件からの一連のデータを有効または無効にできます。 コントロールを無効にすると、コントロールは編集できなくなります。 次の例は、「性別」フィールドの値からコントロールを有効にする方法を示しています。
<container type="enabledGroup" enabledIf="@gender=1">
  ...
</container>
<container type="enabledGroup" enabledIf="@gender=2">
  ...
</container>

有効化コンテナは、 type="enabledGroup"属性で定義します 。 enabledIf属性 には 、アクティブ化条件が含まれます。

メモリリストコントロール

メモリリストを使用すると、リストデータのプリロードを使用してコレクション要素を編集できます。 このリストはフィルターまたは構成できません。
これらのリストは、XMLでマッピングされたコレクション要素またはボリュームの少ないリンクで使用されます。

列リスト

このコントロールは、「追加」ボタンと「削除」ボタンを含むツールバー付きの編集可能な列リストを表示しています。
<input xpath="rcpEvent" type="list">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

リストコントロールは、 type="list" 属性を使用して設定する必要があります。リストのパスは、コレクション要素を参照する必要があります。
The columns are declared in the child <input> tags of the list. 列のラベルとサイズは、label属性とcolSize属性を使用し 、強制的 に指定できます
並べ替え順序の矢印は、ordered=" true"属性がデータスキーマのコレクション要素 に追加されると自動的に追加されます。
ツールバーボタンは、水平方向に整列できます。
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

The toolbarCaption attribute forces the horizontal alignment of the toolbar and enters the title above the list.

リストの詳細表示

リスト内のデータの挿入と編集は、別の編集フォームに入力できます。
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true" zoomOnAdd="true">
  <input xpath="@label"/>
  <input xpath="@date"/>

  <form colcount="2" label="Event">
    <input xpath="@label"/>
    <input xpath="@date"/>
  </form>
</input>

編集フォームは、リスト定義の下の要素か <form> ら入力されます。 構造は入力フォームの構造と同じです。 このボ Detail タンは、リストのタグで zoom="true" 属性が完了すると自動的に <input> 追加されます。 この属性を使用すると、選択した行の編集フォームを起動できます。
zoomOnAdd="true" 属性を追加すると 、リスト要素が挿入されたときに編集フォームが強制的に呼び出されます。

Listプロパティ

  • noToolbar :ツールバーを非表示(値「true」)
  • toolbarCaption :ツールバーのラベルをオーバーロード
  • toolbarAlign :ツールバーの位置を変更します(可能な値:"垂直"|"水平"
  • img :リストに関連付けられた画像を表示します
  • form :ターゲット要素の編集フォームをオーバーロードします。
  • zoom :ターゲットの要 Zoom 素を編集するボタンを追加します。
  • zoomOnAdd :追加時に編集フォームを起動
  • xpathChoiceTarget :さらに、入力したリンク上の選択フォームを起動します。

編集不可能なフィールド

フィールドを表示し、編集されないようにするには、タグを使用す <value> るか、タグのreadOnly=" true" 属性を設定し <input> ます。
「性別」フィールドの例:
<value value="@gender"/>
<input xpath="@gender" readOnly="true"/>

ラジオボタン

ラジオボタンを使用すると、複数のオプションから選択できます。 タグを <input> 使用して、選択肢のリストが表示されます。 checkedValue属性では、選択肢に関連付けられた値を指定します
「性別」フィールドの例:
<input type="RadioButton" xpath="@gender" checkedValue="0" label="Choice 1"/>
<input type="RadioButton" xpath="@gender" checkedValue="1" label="Choice 2"/>
<input type="RadioButton" xpath="@gender" checkedValue="2" label="Choice 3"/>

チェックボックス

チェックボックスはブール値の状態を反映します(選択されているかどうか)。 デフォルトでは、このコントロールは「ブール値」(true/false)フィールドで使用されます。 デフォルト値の0または1を持つ変数をこのボタンに関連付けることができます。 この値は、 checkValue属性を使用してオーバーロードで きます。
<input xpath="@boolean1"/>
<input xpath="@field1" type="checkbox" checkedValue="Y"/>

式フィールド

式フィールドは、式から動的にフィールドを更新します。タグを <input> xpath属性と共に使用し 、更新するフィールドのパスと、更新式を含む ​expr属性を入力します。
<!-- Example: updating the boolean1 field from the value contained in the field with path /tmp/@flag -->
<input expr="Iif([/tmp/@flag]=='On', true, false)" type="expr" xpath="@boolean1"/>
<input expr="[/ignored/@action] == 'FCP'" type="expr" xpath="@launchFCP"/>

フォームのコンテキスト

入力フォームを実行すると、編集中のエンティティのデータを含むXMLドキュメントが初期化されます。 このドキュメントはフォームのコンテキストを表し、ワークスペースとして使用できます。

コンテキストの更新

フォームのコンテキストを変更するには、タグを使用します。 <set expr="<value>" xpath="<field>"/> ここで、 <field> は宛先フィールド、は <value> 更新式または値です。
タグの使用例を次に示 <set> します。
  • <set expr="'Test'" xpath="/tmp/@test" /> :一時的な場所/tmp/@test1に「Test」値を配置します。
  • <set expr="'Test'" xpath="@lastName" /> :「lastName」属性のエンティティを「Test」値で更新します
  • <set expr="true" xpath="@boolean1" /> :「boolean1」フィールドの値を「true」に設定します。
  • <set expr="@lastName" xpath="/tmp/@test" /> :「lastName」属性の内容に対する更新
タグとタグを使用してフォームを初期化および閉じる際に、フォームのコンテキストを更 <enter> 新でき <leave> ます。
<form name="recipient" namespace="cus">
  <enter>
    <set...
  </enter>
  ...
  <leave>
    <set...
  </leave>
</form>

タグ <enter> とタ <leave> グは、ページの <container> タイプ(「notebook」と「iconbox」)で使用できます。

式の言語

マクロ言語をフォーム定義で使用して、条件付きテストを実行できます。
式が検 <if expr="<expression>" /> 証されると、タグで指定された命令が実行されます。
<if expr="([/tmp/@test] == 'Test' or @lastName != 'Doe') and @boolean2 == true">
  <set xpath="@boolean1" expr="true"/>
</if>

タグと <check expr="<condition>" /> 組み合わせると、 <error> フォームの検証が行われなくなり、条件が満たされない場合にエラーメッセージが表示されます。
<leave>
  <check expr="/tmp/@test != ''">
    <error>You must populate the 'Test' field!</error> 
  </check>
</leave>

ウィザード

ウィザードに従って、一連のデータ入力手順がページ形式で表示されます。 入力したデータは、フォームを検証する際に保存されます。
ウィザードの構造は次のとおりです。
<form type="wizard" name="example" namespace="cus" img="nms:rcpgroup32.png" label="Wizard example" entity-schema="nms:recipient">
  <container title="Title of page 1" desc="Long description of page 1">
    <input xpath="@lastName"/>
    <input xpath="comment"/>
  </container>
  <container title="Title of page 2" desc="Long description of page 2">
    ...
  </container>
  ...
</form>

要素に type="wizard"属性があると、フォームの構 <form> 築時にウィザードモードを定義できます。 ページは、要素の子で <container> ある要素から完成し <form> ます。 ペー <container> ジの要素にtitleとdescのtitle属性が設定され、ページタイトルの下に説明が表示されます。 ページ間 Previous を移動で Next きるように、ボタンとボタンが自動的に追加されます。
入力し Finish たデータがボタンに保存され、フォームが閉じます。

SOAP メソッド

SOAPメソッドの実行は、ページの最後に配置さ <leave> れたタグから開始できます。
このタ <soapcall> グには、次の入力パラメーターを持つメソッドの呼び出しが含まれます。
<soapCall name="<name>" service="<schema>">
  <param type="<type>" exprIn="<xpath>"/>  
  ...
</soapCall>

サービスの名前とその実装スキーマは、タグの名前と サー ビス 属性を使 用して入 <soapcall> 力します。
入力パラメーターは、タグの下のエ <param> レメントに記述さ <soapcall> れます。
パラメータータイプは type属性で指定する必要があ ります。 使用できるタイプは次のとおりです。
  • string :文字列
  • boolean :ブール値
  • byte :8ビット整数
  • short :16ビット整数
  • long :32ビット整数
  • short :16ビット整数
  • double :倍精度浮動小数点数
  • DOMElement :要素型ノード
exprIn属 性は 、パラメーターとして渡すデータの場所を指定します。
<leave>
  <soapCall name="RegisterGroup" service="nms:recipient">         
    <param type="DOMElement" exprIn="/tmp/entityList"/>         
    <param type="DOMElement" exprIn="/tmp/choiceList"/>         
    <param type="boolean"    exprIn="true"/>       
  </soapCall>
</leave>