Группировка похожих записей по одному значению в xsl 1.0 - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно сгруппировать записи на основе значения в теге OperationID.Если несколько записей имеют один и тот же идентификатор операции, эти записи должны присутствовать в теге комбинаций, а идентификатор операции должен быть общим в теге операции.Я использую XSL vesion 1.0.Пожалуйста, найдите ниже входной XML и требуемый формат XML.Пожалуйста, предложите какое-нибудь решение, используя 1.0

Ввод xml:

<root>
   <records>
        <record>
             <OperationID>13</OperationID>
             <GroupID>00</GroupID>
             <UTC_TIME>2018-12-06</UTC_TIME>
             <ID>123456789</ID>
             <DocumentID>ShowOperationCode20181206071249</DocumentID>
             <AllGroupID>JTH</AllGroupID>
             <AllID>B21B1</AllID>
        </record>
        <record>
             <OperationID>13</OperationID>
             <GroupID>00</GroupID>
             <UTC_TIME>2018-12-06</UTC_TIME>
             <ID>123456789</ID>
             <DocumentID>ShowOperationCode20181206071249</DocumentID>
             <AllGroupID>JTT</AllGroupID>
             <AllID>B21FB</AllID>
        </record>
        <record>
             <OperationID>14</OperationID>
             <GroupID>01</GroupID>
             <UTC_TIME>2018-12-06</UTC_TIME>
             <ID>123456788</ID>
             <DocumentID>ShowOperationCode20181206071250</DocumentID>
             <AllGroupID>KTH</AllGroupID>
             <AllID>BFFHT</AllID>
        </record>
    </records>
</root>

требуемый формат xml:

<ApplicationArea>
      <UTC_TIME>2018-12-06</UTC_TIME>
      <ID>123456789</ID>
   </ApplicationArea>
   <DataArea>
       <OpertionsHeader>
            <DocumentID>ShowOperationCode20181206071249</DocumentID>
       </OpertionsHeader>
       <OperationsDetail>
            <OperationID>13</OperationID>
            <GroupID>00</GroupID>
            <Combinations>
               <Allowance>
                     <AllGroupID>JTH</AllGroupID>
                     <AllID>B21B1</AllID>
               </Allowance>
               <Allowance>
                     <AllGroupID>JTT</AllGroupID>
                     <AllID>B21FB</AllID>
               </Allowance>
            </Combinations>
       </OperationsDetail>
       <OperationsDetail>
           <OperationID>14</OperationID>
            <GroupID>01</GroupID>
            <Combinations>
               <Allowance>
                     <AllGroupID>KTH</AllGroupID>
                     <AllID>BFFHT</AllID>
               </Allowance>
            </Combinations>
       </OperationsDetail>
   </DataArea>
...