# ストラクチャーエレメントをフラット化

[XPath Name] (XPath名)プロパティを使って、属性値に基づいてストラクチャーのエレメントをフィルタリングします。

## このタスクについて

この例では、注文に関する情報が含まれているXMLファイルを使います。各orderエレメントにはstatus属性があります。ステータスがpendingのオーダーだけを処理するようにストラクチャーを設定したいとします。

出力ループにフィルターを設定したマップを作成することもできますが、[XPath Name] (XPath名)プロパティを使ってストラクチャーにフィルターを設定しておけば、このストラクチャーを入力として使う全マップでこのフィルターを自動で適用したい場合に便利です。

次のXMLサンプルを使います:

```
<orders>
    <order status="pending">
        <orderId>189465984</orderId>
        <customer>
            <lastName>Smith</lastName>
            <firstName>Jane</firstName>
        </customer>
    </order>
    <order status="completed">
        <orderId>189465971</orderId>
        <customer>
            <lastName>Doe</lastName>
            <firstName>John</firstName>
        </customer>
    </order>
    <order status="pending">
        <orderId>189465987</orderId>
        <customer>
            <lastName>Jones</lastName>
            <firstName>Lauren</firstName>
        </customer>
    </order>
</orders>
```

## 手順

1. 提供されたXMLサンプルを基に入力ストラクチャーと出力ストラクチャーを作成します。

   詳細は、[サンプルドキュメントからストラクチャーを作成](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/8.0/creating-structure-from-sample-document)をご覧ください。

   情報メモヒント: ストラクチャーを1つ作成し、それを右クリックして[Duplicate] (複製)をクリックすれば2番目のストラクチャーを作成できます。
2. 入力ストラクチャーを開き、[Read Only] (読み取り専用)ドロップダウンリストをクリックして[Editable] (編集可能)を選択します。
3. orderエレメントをクリックし、[XPath Name] (XPath名)プロパティまでスクロールダウンしてorder[@status='pending']と入力します。

   これは、ストラクチャーがstatus="pending"という属性を持つorderエレメントのみを読み取ることを示しています。 ![\[XPath Name\] (XPath名)プロパティタブ。](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/filter_structure_elements_01_xpath.png)
4. 標準マップを作成し、入力ストラクチャーと出力ストラクチャーを追加します。
5. 入力ordersエレメントを対応する出力エレメントに配置し、エレメントをすべてマッピングさせます。

   ![ordersエレメントの配置。](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/filter_structure_elements_02_map.png)
6. [Test Run] (テスト実行)をクリックして結果を表示させます。

## タスクの結果

この例での出力は次のようになります。

```
<orders>
  <order status="pending">
    <orderId>189465984</orderId>
    <customer>
      <lastName>Smith</lastName>
      <firstName>Jane</firstName>
    </customer>
  </order>
  <order status="pending">
    <orderId>189465987</orderId>
    <customer>
      <lastName>Jones</lastName>
      <firstName>Lauren</firstName>
    </customer>
  </order>
</orders>
```