2023-11-29
行方向の展開と列方向への展開サンプル2例組み込み
custommersの子要素群を行方向に、optsの子要素群を列方向に展開する。
この例だと、
入力XML | 出力(CSV想定) |
---|---|
<masterdata> <recs> <rec> <prodid>1000</prodid> <prodname>prod A</prodname> <custommers> <custommer><name>cust 01</name><opts><opt>opt-A</opt></opts> <addr>addr 1</addr></custommer> <custommer><name>cust 02</name><opts><opt>opt-A</opt> <opt>opt-B</opt></opts> <addr>addr 2</addr></custommer> <custommer><name>cust 10</name><opts><opt>opt-A</opt> <opt>opt-C</opt></opts> <addr>addr 10</addr></custommer> </custommers> </rec> <rec> <prodid>1100</prodid> <prodname>prod B</prodname> <custommers> <custommer><name>cust 02</name><opts></opts> <addr>addr 2</addr></custommer> <custommer><name>cust 20</name><addr>addr 20</addr></custommer> </custommers> </rec> <rec> <prodid>9000</prodid> <prodname>prod Z</prodname> <custommers> </custommers> </rec> <rec> <prodid>2000</prodid> <prodname>prod F</prodname> <custommers> <custommer><name>cust 52</name><opts><opt>opt-A</opt> <opt>opt-B</opt> <opt>opt-C</opt></opts> <addr>addr 52</addr></custommer> <custommer><name>cust 55</name><opts></opts></custommer> </custommers> </rec> </recs> </masterdata> | |
要素recがレコードに変換されるので4レコード生成される事になる。
XPath指定の意のようで、相対パス指定等を利用できる。
Tipsにも記述があるけど入力は適切なソートが適用されている必要がある。
XML 1 LEFT OUTER JOIN XML 2 の意。キーはprodid。
キー項目名が(この例だとprodid)が必ず使用される前提を付ける事ができるなら、マージ結合で生成される prodid_1 は削除できる。