<xm:bind> 属性

マップ内で変数を宣言し、その宣言の変数に初期化します。

構文

<elementName 
    xm:bind="elementName variableNameVariable is dataStructure.arrayMember[,...]"
>

属性

bind

変数を宣言し、それをパラメータ変数に初期化する文です。

備考

<xm:bind> 属性は、XML 値をデータ構造のメンバーにバインドしつつ、短い変数名に割り当てる必要がある場合に、特に有用です。<xm:bind> 属性はまた、インスタンス ドキュメントにこのタグが現れない限り、バインドしている変数に対応するオブジェクトがインスタンス化されないことも示します。

次の例では、<xm:bind> により、Address 型(内部クラスなど、コードのスコープ内で使用できる型であることが必要)の新しい変数 a を宣言し、その後、新しい変数を customerData 構造のアドレス メンバーに初期化できるようになっています。<xm:bind><address> タグの属性として使用すると、<address> 要素の値が新しい変数にマップされます。さらに、新しい a 変数は、<street> 要素および <zip> 要素で使用できます。

/**
 * @jws:parameter-xml xml-map::
 *   <customer>
 *     <name>{String customerData.name}</name>
 *     <address xm:bind="Address a is customerData.address">
 *       <street>{a.street}</street>
 *       <zip>{a.zip}</zip>
 *     </address>
 *   </customer>
 *   ::
 */
public void addCustomerData(MyStructure customerData)
{
   System.out.println("Customer name is " + customerData.get("name"));
   System.out.println("Customer zipcode is " +
         ((Address)customerData.get("address")).zip);
}

is 演算子は、<xm:bind> 属性のコンテキストにおける予約語です。つまり、「is」という変数または型を <xm:bind> 属性の値で使用すると、エラーが発生するということです。

注意 : xm プレフィックスとその URI は、任意の JWS ファイルで暗黙的に宣言されます。ただし、XMLMAP ファイルでプレフィックスを使用するには、ネームスペース プレフィックスおよび URI を宣言する必要があります。

関連トピック

<xm:bind> で変数を宣言する

XML マップを使用する理由