Я пытаюсь построить логику отображения для преобразования csv в xml, используя шаблон xsl.Я пытаюсь сопоставить несколько значений в каждой строке группе повторяемых элементов в 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>
Таким образом, для каждого значения в поле B, где значения в поданных A и C одинаковы, сопоставьте значения из поля D, E, F, G, H, IJ к конкретным элементам.
Если честно, я не знаю с чего начать.У меня сначала 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, строки которого должны принадлежать одному и тому же родительскому элементу, а затем сопоставить значение с определенным тегом (для нескольких элементов Field_B, которые будут поступать в csv изнесколько строк, но принадлежащих одному и тому же родительскому элементу)
Когда я выполняю преобразование, мне бы хотелось, чтобы оно отображалось следующим образом:
<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 со значениями diffc,