省略可能な要素のマップを簡略化する

XML マップが基づくルールは複数の重複した割り当てを許可しているので、代替またはオプションの要素を処理する場合にマップを簡略化することができます。たとえば、次の断片的な XML を考えてください。この XML には、<name> および <address> という共通の要素がありますが、郵便番号値については要素が異なります。

<address>
    <name>Don Rumsfeld</name>
    <usZipCode>52332</usZipCode>
</address>
<address>
    <name>Tony Blair</name>
    <britishPostalCode>4F3-G5H</britishPostalCode>
</address>

いずれかが含まれるメッセージの受信が予測される場合には、次のように XML マップを簡略化できます。

/*
  * @jws:parameter-xml xml-map::
  * <getFullAddress>
  * <address>
  *     <name>{name}</name>
  *     <usZipCode>{postalCode}</usZipCode>
  *     <britishPostalCode>{postalCode}</britishPostalCode>
  * </address>
  * </getFullAddress>
  * ::
  */
public int getFullAddress(String name, String postalCode)
{...}

この例では、<usZipCode> または <britishPostalCode> のいずれかの値が、メッセージの内容に応じて postalCode パラメータにマッピングされます。

代替マッピングの割り当て順序

<usZipCode> 要素と <britishPostalCode> 要素の両方が同じメッセージに含まれている場合は、最後の要素がその前の要素を上書きします。前の例で言うと、<britishPostalCode><usZipCode> を上書きします。これは、Java コードで同じ変数に 2 つの値を割り当てるのと同じようなことです。その際には、最初の値が 2 番目の値によって置換されます。

関連トピック

XML 形式のマッチング

中括弧を使用して単純な置換を行う