我需要通过添加一个新元素来转换 XML 文件,该元素的值基于当前文件中的数据和XML
使用XSLT 1.0
. 文件:
文件1:
<Table>
<Row>
<ColA>AValue1</ColA>
<ColB>BValue1</ColB>
</Row>
<Row>
<ColA>AValue2</ColA>
<ColB>BValue2</ColB>
</Row>
</Table>
文件2:
<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>
文件3:
<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 中的行具有一对多的关系。
File2 中的行与 ColC 的 File3 中的行具有多对一关系。
对于 File1 中的每一行,我需要:
在 File2 中查找不同的 ColC 值以查找在 ColA 和 ColB 上匹配的行
对于每个不同的 ColC 值,在 File3 中查找 ColD 值以查找在 ColC 上匹配的行
计算在步骤 2 中查找的 ColD 值的出现次数。ColD 将具有两个值之一(例如“ABC”或“DEF”)。我需要知道“ABC”是否比“DEF”多,如果有,请将 <ColD>ABC</ColD> 添加到 File1 中的该行。否则将 <ColD>DEF</ColD> 添加到 File1 中的该行。最后,File1 中的每一行都应该有 <ColD>ABC</ColD> 或 <ColD>DEF</ColD>。
期望的结果(文件 1 转换):
<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 出现了两次。<ColD>ABC</ColD> 将被添加到第 2 行,因为出现了 ABC 和零 DEF。