XML
現在のファイルと他の2つのファイルのデータに基づいた値を持つ新しい要素を追加してXMLファイルを変換する必要がありますXSLT 1.0
。ファイル:
ファイル1:
<Table>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
</Row>
<Row>
<ColA>AValue2</ColA>
<ColB>BValue2</ColB>
</Row>
</Table>
File2:
<Table>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
<ColC>CValue1</ColC>
</Row>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
<ColC>CValue1</ColC>
</Row>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
<ColC>CValue2</ColC>
</Row>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
<ColC>CValue3</ColC>
</Row>
<Row>
<ColA>AValue2</ColA>
<ColB>BValue2</ColB>
<ColC>CValue1</ColC>
</Row>
</Table>
File3:
<Table>
<Row>
<ColC>CValue1</ColC>
<ColD>ABC</ColD>
</Row>
<Row>
<ColC>CValue2</ColC>
<ColD>DEF</ColD>
</Row>
<Row>
<ColC>CValue3</ColC>
<ColD>DEF</ColD>
</Row>
</Table>
File1の行は、ColAおよびColBによってFile2の行と1対多の関係にあります。
File2の行は、ColCによるFile3の行と多対1の関係にあります。
File1の各行について、次のことを行う必要があります。
ColAとColBで一致する行について、File2で個別のColC値を検索します
個別のColC値ごとに、File3でColD値を検索して、ColCで一致する行を探します
手順2で検索されたColD値の出現回数をカウントします。ColDは2つの値(「ABC」または「DEF」など)のいずれかになります。「DEF」よりも「ABC」が多いかどうかを知る必要があります。ある場合は、File1のその行に<ColD> ABC</ColD>を追加します。それ以外の場合は、File1のその行に<ColD> DEF</ColD>を追加します。最後に、File1の各行には<ColD> ABC</ColD>または<ColD>DEF</ColD>が必要です。
望ましい結果(File1が変換されました):
<Table>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
<ColD>DEF</ColD>
</Row>
<Row>
<ColA>AValue2</ColA>
<ColB>BValue2</ColB>
<ColD>ABC</ColD>
</Row>
</Table>
<ColD> DEF </ ColD>は、ABCが1回(個別に)発生したのに対し、DEFが2回発生したため、最初の行に追加されます。ABCが1回発生し、DEFがゼロだったため、<ColD> ABC</ColD>が行2に追加されます。