XSLT xml to xml grouping nodes and transform to other structure



I'm having a xml document which I would like to transform from:



<?xml version="1.0" encoding="UTF-8"?>
<import:configuration xmlns:import="http://ift.tt/194uaLv">
<import:input>
<import:file headers="1" group="MAPPING">
<import:name>file001.txt</import:name>
<import:separator><![CDATA[;]]></import:separator>
<import:table>TAB00008_TECSPEC</import:table>
<import:field primary="true">
<import:name>VEMAR</import:name>
<import:target>VEMAR</import:target>
<import:type dbs="oracle" type="text">VARCHAR(3)</import:type>
<import:reference>
<import:table>TAB00006_TECSPEC</import:table>
<import:field>VEMAR</import:field>
</import:reference>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field primary="true">
<import:name>VENR</import:name>
<import:target>VENR</import:target>
<import:type dbs="oracle" type="numeric">NUMBER(7)</import:type>
<import:reference>
<import:table>TAB00006_TECSPEC</import:table>
<import:field>VENR</import:field>
</import:reference>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field primary="true">
<import:name>KNR</import:name>
<import:target>KNR</import:target>
<import:type dbs="oracle" type="numeric">NUMBER(9)</import:type>
<import:reference>
<import:table>TAB00003_TECSPEC</import:table>
<import:field>KNR</import:field>
</import:reference>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field>
<import:name>DATNEU</import:name>
<import:target>DATNEU</import:target>
<import:type dbs="oracle" type="date" format="YYYY.MM.DD">DATE</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field>
<import:name>VTYPE</import:name>
<import:target>VTYPE</import:target>
<import:type dbs="oracle" type="numeric">NUMBER(1)</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:description><![CDATA[]]></import:description>
</import:file>
</import:input>
</import:configuration>


To:



<?xml version="1.0" encoding="UTF-8"?>
<import:configuration xmlns:import="http://ift.tt/194uaLv">
<import:input>
<import:file headers="1" group="MAPPING">
<import:name>file001.txt</import:name>
<import:separator><![CDATA[;]]></import:separator>
<import:table>TAB00008_TECSPEC</import:table>
<import:field primary="true">
<import:name>VEMAR</import:name>
<import:target>VEMAR</import:target>
<import:type dbs="oracle" type="text">VARCHAR(3)</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field primary="true">
<import:name>VENR</import:name>
<import:target>VENR</import:target>
<import:type dbs="oracle" type="numeric">NUMBER(7)</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field primary="true">
<import:name>KNR</import:name>
<import:target>KNR</import:target>
<import:type dbs="oracle" type="numeric">NUMBER(9)</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field>
<import:name>DATNEU</import:name>
<import:target>DATNEU</import:target>
<import:type dbs="oracle" type="date" format="YYYY.MM.DD">DATE</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:field>
<import:name>VTYPE</import:name>
<import:target>VTYPE</import:target>
<import:type dbs="oracle" type="numeric">NUMBER(1)</import:type>
<import:description><![CDATA[]]></import:description>
</import:field>
<import:reference>
<import:table>TAB00006_TECSPEC</table>
<import:link>
<source>VEMAR</source>
<target>VEMAR</target>
</import:link>
<import:link>
<source>VENR</source>
<target>VENR</target>
</import:link>
</import:reference>
<import:reference>
<import:table>TAB00003_TECSPEC</table>
<import:link>
<source>KNR</source>
<target>KNR</target>
</import:link>
</import:reference>
<import:description><![CDATA[]]></import:description>
</import:file>
</import:input>
</import:configuration>


I want to group all references (</import:reference> under <import:field>) and grouped by table transform them to one element as described above.


I was reading this posting/question: XML to CSV with XSLT - Grouping nodes but I can't get this working to get the desired output.


My knowledge in xslt is not so deep. Can anybody give a hint how I could do this?


No comments:

Post a Comment