> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# arc:map

> arc:map を使用して、あるアイテムのアトリビュートを別のアイテムのアトリビュートにマップし、ソースアイテムから読み取って新しい名前で宛先アイテムに書き込みます。

export const siteNameShort = "Arc";

`arc:map` キーワードを使用して、あるアイテムのアトリビュートを別のアイテムのアトリビュートにマップします。アトリビュートは、あるアイテムから読み取られ、マップ文字列で指定された新しい名前で別のアイテムに書き込まれます。`arc:map` キーワードは、宛先のアイテムを削除するのではなく、新しいアトリビュートを追加します。宛先アイテムにアトリビュートが存在する場合には、そのアトリビュートは上書きされ、他のアトリビュートはそのまま残ります。

## パラメータ

* **to**：アトリビュートが書き込まれるアイテムの名前。
* **from**：アトリビュートが読み取られるアイテムの名前。
* **map**：宛先アイテムのアトリビュート名を指定し、続いてソースアイテムのアトリビュートを指定するアトリビュート名のリスト。例えば、次のシンタックスを使って、ある接頭辞のアトリビュートを別の接頭辞にマップすることができます。

  `customer:\* = soap:\*`

  有効なアトリビュート名でない文字はすべて無視され、名前の終わりを区切るために使用されます。

## アトリビュートの制御

None

## 例

3つのアトリビュートをマップします：マップは、`to` アトリビュート名の後に`from` アトリビュート名が続きます。

```xml theme={null}
<arc:set item="item1" attr="var1" value="x"/>
<arc:set item="item1" attr="var2" value="y"/>
<arc:set item="item2" attr="attr1" value="z"/>
<arc:map to="item2" from="item1" map="attr1=var1, attr2=var2"/>
```

この例では、`item1` の`var1` および`var2` アトリビュートは、`item2` の`attr1`および`attr2` アトリビュートにそれぞれマップされます。`item2` の値`z` で設定されている`attr1` アトリビュートは、`item1` の`var1` の値である`x` で上書きされます。`item2` に存在しない`attr2` アトリビュートは新たに作成され、`y`（`item1` の`var2` の値）に設定されます。

複数のアトリビュートを、ある接頭辞を持つアイテムから別の接頭辞を持つアイテムにマップすることができます。これは、アプリケーション接頭辞（例えば`soap:*`）をビジネスドメイン接頭辞（例えば `customer:*`）に変更する際に便利です。次の例では、`soapout` アイテム内のすべての`soap:*` アトリビュートから、`customer` アイテム内の`customer:*` 接頭辞を持つアトリビュートへのマッピングを作成します：

```xml theme={null}
<arc:map from="soapout" to="customer" map="customer:* = soap:*"/>
```

1つのアイテムから別のアイテムにすべてのアトリビュートをコピーします：

```xml theme={null}
<arc:map from="copyfrom" to="copyto" map="* = *"/>
```

## 関連項目

* [arc:set](./op-arc-set)：アイテムのアトリビュートを設定する。
