I would like to know if it's possible to transform this:
<?xml version="1.0" encoding="UTF-8"?>
<XML>
<GLOBAL_DETORDERLBL>ORDER</GLOBAL_DETORDERLBL>
<GLOBAL_DETCUSTLBL>CUST</GLOBAL_DETCUSTLBL>
<GLOBAL_DETAANTLBL>QTY</GLOBAL_DETAANTLBL>
<GLOBAL_DETKLEURLBL>KLEUR</GLOBAL_DETKLEURLBL>
<GLOBAL_DETCOMPLBL>COMPONENTS</GLOBAL_DETCOMPLBL>
<GLOBAL_DETPROFLBL>PROFILE</GLOBAL_DETPROFLBL>
<GLOBAL_PROFIEL></GLOBAL_PROFIEL>
<GLOBAL_PROFIELLBL>PROFILE:</GLOBAL_PROFIELLBL>
<GLOBAL_CATTO>NIEUW</GLOBAL_CATTO>
<GLOBAL_CATFR>NIEUW</GLOBAL_CATFR>
<GLOBAL_CAT2LBL>CAT 2 :</GLOBAL_CAT2LBL>
<GLOBAL_GROEP2></GLOBAL_GROEP2>
<GLOBAL_GROEP1></GLOBAL_GROEP1>
<GLOBAL_GROEPLBL>GROUP :</GLOBAL_GROEPLBL>
<GLOBAL_TEXT></GLOBAL_TEXT>
<GLOBAL_TEXTLBL>TEKST :</GLOBAL_TEXTLBL>
<GLOBAL_ORDER15></GLOBAL_ORDER15>
<GLOBAL_ORDER14></GLOBAL_ORDER14>
<GLOBAL_ORDER13></GLOBAL_ORDER13>
<GLOBAL_ORDER12></GLOBAL_ORDER12>
<GLOBAL_ORDER11></GLOBAL_ORDER11>
<GLOBAL_ORDER10></GLOBAL_ORDER10>
<GLOBAL_ORDER9></GLOBAL_ORDER9>
<GLOBAL_ORDER8></GLOBAL_ORDER8>
<GLOBAL_ORDER7></GLOBAL_ORDER7>
<GLOBAL_ORDER6></GLOBAL_ORDER6>
<GLOBAL_DATE>27/03/14</GLOBAL_DATE>
<GLOBAL_DATELBL>DATE :</GLOBAL_DATELBL>
<GLOBAL_ORDER5></GLOBAL_ORDER5>
<GLOBAL_ORDER4></GLOBAL_ORDER4>
<GLOBAL_ORDER3></GLOBAL_ORDER3>
<GLOBAL_ORDER2></GLOBAL_ORDER2>
<GLOBAL_ORDER1></GLOBAL_ORDER1>
<GLOBAL_ORDERSLBL>ORDERS :</GLOBAL_ORDERSLBL>
<GLOBAL_WORKCENTER>Insulation bicolor machine 1</GLOBAL_WORKCENTER>
<GLOBAL_WORKCENTERLBL>Workcenter</GLOBAL_WORKCENTERLBL>
<GLOBAL_INROL> 38043</GLOBAL_INROL>
<GLOBAL_INROLBILBL>INROLBON BICOLORS</GLOBAL_INROLBILBL>
<GLOBAL_ADRES>Aliplast Sp. z o.o.
20-276 Lublin</GLOBAL_ADRES>
<GLOBAL_PAGELBL>Page</GLOBAL_PAGELBL>
<FIELD_NEWPROD></FIELD_NEWPROD>
<FIELD_MANR>IP011/9016M/6.5</FIELD_MANR>
<FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
<FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
<FIELD_SORN> 338940</FIELD_SORN>
<FIELD_SQTY> 30</FIELD_SQTY>
<FIELD_DELDAT>01-04-14</FIELD_DELDAT>
<FIELD_CONTAINER></FIELD_CONTAINER>
<FIELD_PRODORDER> 6242586</FIELD_PRODORDER>
<FIELD_RIT>2 - 2</FIELD_RIT>
<FIELD_CNAM>Slovakia</FIELD_CNAM>
<FIELD_PRDC>XIP011B</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS></FIELD_BATS>
<FIELD_STOCKSIGN></FIELD_STOCKSIGN>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME></FIELD_NAME>
<FIELD_PRDC>XIP011A</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS></FIELD_BATS>
<FIELD_STOCKSIGN></FIELD_STOCKSIGN>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME></FIELD_NAME>
<FIELD_PRDC>P4710</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS></FIELD_BATS>
<FIELD_STOCKSIGN></FIELD_STOCKSIGN>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME></FIELD_NAME>
<FIELD_PRDC>P4711</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS></FIELD_BATS>
<FIELD_STOCKSIGN></FIELD_STOCKSIGN>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME></FIELD_NAME>
<FIELD_NEWPROD>...
</XML>
to
<?xml version="1.0" encoding="UTF-8"?>
<XML>
<GLOBAL_DETORDERLBL>ORDER</GLOBAL_DETORDERLBL>
<GLOBAL_DETCUSTLBL>CUST</GLOBAL_DETCUSTLBL>
<GLOBAL_DETAANTLBL>QTY</GLOBAL_DETAANTLBL>
<GLOBAL_DETKLEURLBL>KLEUR</GLOBAL_DETKLEURLBL>
<GLOBAL_DETCOMPLBL>COMPONENTS</GLOBAL_DETCOMPLBL>
<GLOBAL_DETPROFLBL>PROFILE</GLOBAL_DETPROFLBL>
<GLOBAL_PROFIEL/>
<GLOBAL_PROFIELLBL>PROFILE:</GLOBAL_PROFIELLBL>
<GLOBAL_CATTO>NIEUW</GLOBAL_CATTO>
<GLOBAL_CATFR>NIEUW</GLOBAL_CATFR>
<GLOBAL_CAT2LBL>CAT 2 :</GLOBAL_CAT2LBL>
<GLOBAL_GROEP2/>
<GLOBAL_GROEP1/>
<GLOBAL_GROEPLBL>GROUP :</GLOBAL_GROEPLBL>
<GLOBAL_TEXT/>
<GLOBAL_TEXTLBL>TEKST :</GLOBAL_TEXTLBL>
<GLOBAL_ORDER15/>
<GLOBAL_ORDER14/>
<GLOBAL_ORDER13/>
<GLOBAL_ORDER12/>
<GLOBAL_ORDER11/>
<GLOBAL_ORDER10/>
<GLOBAL_ORDER9/>
<GLOBAL_ORDER8/>
<GLOBAL_ORDER7/>
<GLOBAL_ORDER6/>
<GLOBAL_DATE>27/03/14</GLOBAL_DATE>
<GLOBAL_DATELBL>DATE :</GLOBAL_DATELBL>
<GLOBAL_ORDER5/>
<GLOBAL_ORDER4/>
<GLOBAL_ORDER3/>
<GLOBAL_ORDER2/>
<GLOBAL_ORDER1/>
<GLOBAL_ORDERSLBL>ORDERS :</GLOBAL_ORDERSLBL>
<GLOBAL_WORKCENTER>Insulation bicolor machine 1</GLOBAL_WORKCENTER>
<GLOBAL_WORKCENTERLBL>Workcenter</GLOBAL_WORKCENTERLBL>
<GLOBAL_INROL> 38043</GLOBAL_INROL>
<GLOBAL_INROLBILBL>INROLBON BICOLORS</GLOBAL_INROLBILBL>
<GLOBAL_ADRES></GLOBAL_ADRES>
<GLOBAL_PAGELBL>Page</GLOBAL_PAGELBL>
<LINE>
<FIELD_NEWPROD/>
<FIELD_MANR>IP011/9016M/6.5</FIELD_MANR>
<FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
<FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
<FIELD_SORN> 338940</FIELD_SORN>
<FIELD_SQTY> 30</FIELD_SQTY>
<FIELD_DELDAT>01-04-14</FIELD_DELDAT>
<FIELD_CONTAINER/>
<FIELD_PRODORDER> 6242586</FIELD_PRODORDER>
<FIELD_RIT>2 - 2</FIELD_RIT>
<FIELD_CNAM>Slovakia</FIELD_CNAM>
<ITEM>
<FIELD_PRDC>XIP011B</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS/>
<FIELD_STOCKSIGN/>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME/>
</ITEM>
<ITEM>
<FIELD_PRDC>XIP011A</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS/>
<FIELD_STOCKSIGN/>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME/>
</ITEM>
<ITEM>
<FIELD_PRDC>P4710</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS/>
<FIELD_STOCKSIGN/>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME/>
</ITEM>
<ITEM>
<FIELD_PRDC>P4711</FIELD_PRDC>
<FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
<FIELD_BATS/>
<FIELD_STOCKSIGN/>
<FIELD_QTY> 30</FIELD_QTY>
<FIELD_NAME/>
</ITEM>
</LINE>
<LINE>...
</XML>
using xslt 1.0
LINE is generated when FIELD_NEWPROD is matched, ITEM is a subgroup in LINE when FIELD_PRDC is matched. All FIELD_* are possible to form groups but only those defined should make them. (like FIELD_NEWPROD)
I need an example that I can expand with more depth (deeper levels on root, LINE and ITEM). Before I looked at XSLT, I used my own definition to make grouping but it's only 1-level deep.
<GROUP name="ORDER" value="FIELD_ORDNOLBL"/>
<GROUP name="LIJN" value="FIELD_PRDITM"/>
<GROUP name="TOTAL_ORDER" value="FIELD_TOTALLBL"/>
<GROUP name="COMMOD" value="FIELD_COMCODLBL"/>
<GROUP name="SERIENR" value="FIELD_SENOLBL"/>
<GROUP name="TOTAL" value="FIELD_TOTLBL"/>
This is how I created groups but now I need a definition that can also handle nested groups. *(This applies to another job so the data is not not relevent to this example)*
I'm totally new to xsl and wish to learn it through a practical example. I'll be transforming the xml in C# to produce the above result but I'm missing the first steps to create an xsl file.
static void Main(string[] args)
{
List<String> _lines = Lines("ALR494AL.dat");
List<KeyValuePair<String, String>> _library = Library(_lines);
String _xml = XMLDocument(_library);
StringBuilder _result = new StringBuilder();
XPathDocument _xpd = new XPathDocument(new StringReader(_xml));
XslCompiledTransform _xct = new XslCompiledTransform();
XmlWriter _writer = XmlWriter.Create(_result);
_xct.Load("ALR494AL.xsl");
_xct.Transform(_xpd, null, _writer);
}
Your help is greatly appreciated!