我正在尝试使用xsl模板构建从csv到xml转换的映射逻辑。我正在尝试将每行中的多个值映射到xml中的一组可重复元素。
一个示例csv看起来像这样:
Field A Field B Field C Field D Field E Field F Field G Field H Field I FieldJ
123 bravo alpha 500 8.5 Portugal
123 charlie alpha 100 2.5
123 delta alpha 23 ECHO
当我进行转换时,我希望看到其映射如下:
<Field_A>
<Field_B>
<Field_D>500</Field_D>
<Field_E>8.5</Field_E>
<Field_F>Portugal</Field_F>
</Field_B>
<Field_B>
<Field_G>100</Field_G>
<Field_H>2.5</Field_H>
<Field_B>
<Field_I>23</Field_I>
<Field_J>ECHO</Field_J>
</Field_B>
</Field_A>
因此,对于字段A和C中的值相同的字段B中的每个值,请将字段D,E,F,G,H,I,J中的值映射到特定元素。
说实话,我不知道从哪里开始。我首先有一个if
声明:
<Field_A>
<xsl: if test="@Field_B = 'bravo'>
<Field_D><xsl: value - of select = "Field_D"/></Field D>
<Field_E><xsl: value - of select = "Field_E"/></Field_E>
.....
ETC。
如何插入for each
循环,如何确保将正确的值映射到正确的标记?
我是否需要csv中的另一列带有true / false指示符的行必须属于同一父元素,然后将值映射到特定标记(对于将要从多行进入csv的多个Field_B元素,但属于同一父元素)
当我进行转换时,我希望看到其映射如下:
<Field_A>
<Field_B>
<Field_D>500</Field_D>
<Field_E>8.5</Field_E>
<Field_F>Portugal</Field_F>
</Field_B>
<Field_B>
<Field_G>100</Field_G>
<Field_H>2.5</Field_H>
<Field_B>
<Field_I>23</Field_I>
<Field_J>ECHO</Field_J>
</Field_B>
</Field_A>
也可以有多个具有不同值的Field_B元素。