使用xsl模板的csv到xml转换的映射逻辑,用于多个值和出现

时间:2019-04-09 10:24:17

标签: xslt

我正在尝试使用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元素。

0 个答案:

没有答案