логика сопоставления для преобразования csv в xml с использованием шаблона xsl для нескольких значений и вхождений - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь построить логику отображения для преобразования 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,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...