将基本XML转换为结构化/嵌套XML

时间:2014-03-28 12:13:01

标签: c# xml xslt xslt-1.0

我想知道是否可以改变这个:

    <?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>

    <?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>

使用 xslt 1.0

当FIELD_NEWPROD匹配时生成LINE,当FIELD_PRDC匹配时,ITEM是LINE中的子组。所有FIELD_ *都可以形成组,但只有那些定义的组才能形成组。 (如FIELD_NEWPROD)

我需要一个可以更深入扩展的示例(更深层次的根,LINE和ITEM)。 在我查看XSLT之前,我使用自己的定义进行分组,但它只有1级深度。

<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"/>

这是我创建组的方法,但现在我需要一个也可以处理嵌套组的定义。 *(这适用于另一个作业所以数据与此示例并不相关)*

我对xsl完全陌生,希望通过一个实际的例子来学习它。 我将在C#中转换xml以产生上述结果,但我遗漏了 创建xsl文件的第一步。

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);

}

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

使用XSLT 2.0您可以使用<xsl:for-each-group select="[YOUR SELECTION]" group-starting-with="[TO START THE GROUP]",请参阅下一个XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="TEST">
        <xsl:copy>
            <xsl:for-each-group select="child::*" group-starting-with="FIELD_NEWPROD">
                <xsl:choose>
                    <xsl:when test="self::FIELD_NEWPROD">
                        <ITEM>
                            <xsl:for-each-group select="current-group()" group-starting-with="FIELD_PRDC">
                                <xsl:choose>
                                    <xsl:when test="self::FIELD_PRDC">
                                        <DETAIL>
                                            <xsl:apply-templates select="current-group()"/>
                                        </DETAIL>
                                    </xsl:when>
                                    <xsl:otherwise>
                                        <xsl:apply-templates select="current-group()"/>
                                    </xsl:otherwise>
                                </xsl:choose>
                            </xsl:for-each-group>
                        </ITEM>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="current-group()"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:for-each-group>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

应用于此XML时:

<?xml version="1.0" encoding="UTF-8"?>
<TEST>
    <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>
    <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>
    <FIELD_PRDC>XIP011B</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   30</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>XIP011A</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   30</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4710</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   30</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4711</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   30</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>IP054</FIELD_MANR>
    <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
    <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
    <FIELD_SORN> 338940</FIELD_SORN>
    <FIELD_SQTY>    4</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242569</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_TEXTMFG>UWAGA DZ. HANDLOWY</FIELD_TEXTMFG>
    <FIELD_TEXTMFG>przy bikolorze dopytac Klienta czy ma wystawac profil z zewn�trz</FIELD_TEXTMFG>
    <FIELD_TEXTMFG>czy od wewn�trz konstrukcji.</FIELD_TEXTMFG>
    <FIELD_TEXTMFG>I z taka informacja do Kamila Ku�</FIELD_TEXTMFG>
    <FIELD_PRDC>XIP054B</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS>9016M</FIELD_BATS>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    4</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>XIP053A</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS>9016M</FIELD_BATS>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    4</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4722</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    8</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY/>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>IP721</FIELD_MANR>
    <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
    <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
    <FIELD_SORN> 338940</FIELD_SORN>
    <FIELD_SQTY>    1</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242570</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC>XIP721B</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS>9016M</FIELD_BATS>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>XIP021A</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS>9016M</FIELD_BATS>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4709</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4711</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>IP814/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>    2</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242582</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC>XIP814B</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    2</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>XIP814A</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    2</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4731</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    4</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY/>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>IP824/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>    3</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242583</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    3</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    3</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4731</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    6</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY/>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>IP825/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>   11</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242585</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   11</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   11</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4731</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   22</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY/>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>IP854</FIELD_MANR>
    <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
    <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
    <FIELD_SORN> 338940</FIELD_SORN>
    <FIELD_SQTY>    6</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242571</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    6</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    6</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4731</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>   12</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY/>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>SP011/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>    1</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242580</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC>XIP011A</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>XIP011B</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4715</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4716</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_NEWPROD/>
    <FIELD_MANR>SP824</FIELD_MANR>
    <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
    <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
    <FIELD_SORN> 338940</FIELD_SORN>
    <FIELD_SQTY>    1</FIELD_SQTY>
    <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
    <FIELD_CONTAINER/>
    <FIELD_PRODORDER>       6242574</FIELD_PRODORDER>
    <FIELD_RIT>2 - 2</FIELD_RIT>
    <FIELD_CNAM>Slovakia</FIELD_CNAM>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    1</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC>P4715</FIELD_PRDC>
    <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY>    2</FIELD_QTY>
    <FIELD_NAME/>
    <FIELD_PRDC/>
    <FIELD_LENGTHH/>
    <FIELD_BATS/>
    <FIELD_STOCKSIGN/>
    <FIELD_QTY/>
    <FIELD_NAME/>
</TEST>

它产生下一个输出:

<?xml version="1.0" encoding="UTF-8"?>
<TEST>
    <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_PAGELBL>Page</GLOBAL_PAGELBL>
    <ITEM>
        <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>
        <DETAIL>
            <FIELD_PRDC>XIP011B</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   30</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>XIP011A</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   30</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4710</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   30</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4711</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   30</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>IP054</FIELD_MANR>
        <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
        <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
        <FIELD_SORN> 338940</FIELD_SORN>
        <FIELD_SQTY>    4</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242569</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <FIELD_TEXTMFG>UWAGA DZ. HANDLOWY</FIELD_TEXTMFG>
        <FIELD_TEXTMFG>przy bikolorze dopytac Klienta czy ma wystawac profil z zewn�trz</FIELD_TEXTMFG>
        <FIELD_TEXTMFG>czy od wewn�trz konstrukcji.</FIELD_TEXTMFG>
        <FIELD_TEXTMFG>I z taka informacja do Kamila Ku�</FIELD_TEXTMFG>
        <DETAIL>
            <FIELD_PRDC>XIP054B</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS>9016M</FIELD_BATS>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    4</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>XIP053A</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS>9016M</FIELD_BATS>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    4</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4722</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    8</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY/>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>IP721</FIELD_MANR>
        <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
        <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
        <FIELD_SORN> 338940</FIELD_SORN>
        <FIELD_SQTY>    1</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242570</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC>XIP721B</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS>9016M</FIELD_BATS>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>XIP021A</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS>9016M</FIELD_BATS>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4709</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4711</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>IP814/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>    2</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242582</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC>XIP814B</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    2</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>XIP814A</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    2</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4731</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    4</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY/>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>IP824/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>    3</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242583</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    3</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    3</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4731</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    6</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY/>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>IP825/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>   11</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242585</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   11</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   11</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4731</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   22</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY/>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>IP854</FIELD_MANR>
        <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
        <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
        <FIELD_SORN> 338940</FIELD_SORN>
        <FIELD_SQTY>    6</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242571</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    6</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    6</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4731</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>   12</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY/>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>SP011/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>    1</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242580</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC>XIP011A</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>XIP011B</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4715</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4716</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
    <ITEM>
        <FIELD_NEWPROD/>
        <FIELD_MANR>SP824</FIELD_MANR>
        <FIELD_LENGTH1>L: 6,50</FIELD_LENGTH1>
        <FIELD_NAME>Hesta s.r.o.</FIELD_NAME>
        <FIELD_SORN> 338940</FIELD_SORN>
        <FIELD_SQTY>    1</FIELD_SQTY>
        <FIELD_DELDAT>01-04-14</FIELD_DELDAT>
        <FIELD_CONTAINER/>
        <FIELD_PRODORDER>       6242574</FIELD_PRODORDER>
        <FIELD_RIT>2 - 2</FIELD_RIT>
        <FIELD_CNAM>Slovakia</FIELD_CNAM>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    1</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC>P4715</FIELD_PRDC>
            <FIELD_LENGTHH>L:6.5</FIELD_LENGTHH>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY>    2</FIELD_QTY>
            <FIELD_NAME/>
        </DETAIL>
        <DETAIL>
            <FIELD_PRDC/>
            <FIELD_LENGTHH/>
            <FIELD_BATS/>
            <FIELD_STOCKSIGN/>
            <FIELD_QTY/>
            <FIELD_NAME/>
        </DETAIL>
    </ITEM>
</TEST>

答案 1 :(得分:2)

  

我无法相信没有一般的“黄金”解决方案   问题。 (Flat XML&gt;带嵌套的分组XML)

实际上,这并不简单,至少在XSLT 1.0中没有。为此,您可以感谢上游构建您输入的特定平面架构的人员。如果你对此有任何控制,也许你应该调查一下。它似乎是一个设计糟糕的数据库导出不良的出口。

无论如何,试试:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="line-fields" 
         match="*[starts-with(name(), 'FIELD_')][not(self::FIELD_PRDC)]" 
         use="concat(generate-id(preceding-sibling::FIELD_NEWPROD[1]), '|', count(preceding-sibling::FIELD_PRDC))" />

<xsl:key name="item-headers" 
         match="FIELD_PRDC" 
         use="generate-id(preceding-sibling::FIELD_NEWPROD[1])" />

<xsl:key name="item-fields" 
         match="*[starts-with(name(), 'FIELD_')][not(self::FIELD_PRDC or self::FIELD_NEWPROD)]" 
         use="concat(generate-id(preceding-sibling::FIELD_NEWPROD[1]), '|',  generate-id(preceding-sibling::FIELD_PRDC[1]))" />

<xsl:template match="/XML">
    <xsl:copy>
        <xsl:apply-templates select="*[starts-with(name(), 'GLOBAL_')]"/>
        <xsl:apply-templates select="FIELD_NEWPROD"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="FIELD_NEWPROD">
    <LINE>
        <xsl:copy-of select="."/>
        <xsl:apply-templates select="key('line-fields', concat(generate-id(), '|', count(preceding-sibling::FIELD_PRDC)))"/>
        <xsl:apply-templates select="key('item-headers', generate-id())"/>
    </LINE>
</xsl:template>

<xsl:template match="FIELD_PRDC">
    <ITEM>
        <xsl:copy-of select="."/>
        <xsl:apply-templates select="key('item-fields', concat(generate-id(preceding-sibling::FIELD_NEWPROD[1]), '|',  generate-id()))"/>
    </ITEM>
</xsl:template>

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

当应用于以下测试输入时:

<XML>
    <GLOBAL_DETORDERLBL>ORDER</GLOBAL_DETORDERLBL>
    <GLOBAL_DETCUSTLBL>CUST</GLOBAL_DETCUSTLBL>
    <GLOBAL_DETAANTLBL>QTY</GLOBAL_DETAANTLBL>


    <FIELD_NEWPROD>A</FIELD_NEWPROD>
    <FIELD_MANR>AA</FIELD_MANR>
    <FIELD_LENGTH1>AB</FIELD_LENGTH1>

    <FIELD_PRDC>A1</FIELD_PRDC>
    <FIELD_LENGTHH>A11</FIELD_LENGTHH>
    <FIELD_BATS>A12</FIELD_BATS>

    <FIELD_PRDC>A2</FIELD_PRDC>
    <FIELD_LENGTHH>A21</FIELD_LENGTHH>
    <FIELD_BATS>A22</FIELD_BATS>

    <FIELD_PRDC>A3</FIELD_PRDC>
    <FIELD_LENGTHH>A31</FIELD_LENGTHH>
    <FIELD_BATS>A32</FIELD_BATS>


    <FIELD_NEWPROD>B</FIELD_NEWPROD>
    <FIELD_MANR>BA</FIELD_MANR>
    <FIELD_LENGTH1>BB</FIELD_LENGTH1>

    <FIELD_PRDC>B1</FIELD_PRDC>
    <FIELD_LENGTHH>B11</FIELD_LENGTHH>
    <FIELD_BATS>B12</FIELD_BATS>

    <FIELD_PRDC>B2</FIELD_PRDC>
    <FIELD_LENGTHH>B21</FIELD_LENGTHH>
    <FIELD_BATS>B22</FIELD_BATS>
</XML>

结果是:

<?xml version="1.0" encoding="UTF-8"?>
<XML>
   <GLOBAL_DETORDERLBL>ORDER</GLOBAL_DETORDERLBL>
   <GLOBAL_DETCUSTLBL>CUST</GLOBAL_DETCUSTLBL>
   <GLOBAL_DETAANTLBL>QTY</GLOBAL_DETAANTLBL>
   <LINE>
      <FIELD_NEWPROD>A</FIELD_NEWPROD>
      <FIELD_MANR>AA</FIELD_MANR>
      <FIELD_LENGTH1>AB</FIELD_LENGTH1>
      <ITEM>
         <FIELD_PRDC>A1</FIELD_PRDC>
         <FIELD_LENGTHH>A11</FIELD_LENGTHH>
         <FIELD_BATS>A12</FIELD_BATS>
      </ITEM>
      <ITEM>
         <FIELD_PRDC>A2</FIELD_PRDC>
         <FIELD_LENGTHH>A21</FIELD_LENGTHH>
         <FIELD_BATS>A22</FIELD_BATS>
      </ITEM>
      <ITEM>
         <FIELD_PRDC>A3</FIELD_PRDC>
         <FIELD_LENGTHH>A31</FIELD_LENGTHH>
         <FIELD_BATS>A32</FIELD_BATS>
      </ITEM>
   </LINE>
   <LINE>
      <FIELD_NEWPROD>B</FIELD_NEWPROD>
      <FIELD_MANR>BA</FIELD_MANR>
      <FIELD_LENGTH1>BB</FIELD_LENGTH1>
      <ITEM>
         <FIELD_PRDC>B1</FIELD_PRDC>
         <FIELD_LENGTHH>B11</FIELD_LENGTHH>
         <FIELD_BATS>B12</FIELD_BATS>
      </ITEM>
      <ITEM>
         <FIELD_PRDC>B2</FIELD_PRDC>
         <FIELD_LENGTHH>B21</FIELD_LENGTHH>
         <FIELD_BATS>B22</FIELD_BATS>
      </ITEM>
   </LINE>
</XML>

答案 2 :(得分:0)

请按照以下步骤

XSLT文件用于将数据从一个文件转换为另一个文件

1)首先,您必须创建&#34; XSLT&#34;选择新建|文件| XSLT

文件

2)使用XSLT ..

映射XML元素

3)点击&#34;启动XSLT调试&#34; .....运行xslt,您将以自定义格式获取数据。

我已经为你创建了xslt代码。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="XML">
      <XML>
        <GLOBAL_FIELD1>
          <xsl:value-of select="GLOBAL_FIELD1" />
        </GLOBAL_FIELD1>
        <GLOBAL_FIELD2>
          <xsl:value-of select="GLOBAL_FIELD2" />
        </GLOBAL_FIELD2>
        <GLOBAL_FIELD3>
          <xsl:value-of select="GLOBAL_FIELD3" />
        </GLOBAL_FIELD3>
        <ITEM>
          <FIELD_ITEM1>
            <xsl:value-of select="FIELD_ITEM1" />
          </FIELD_ITEM1>
          <FIELD_ITEM2>
            <xsl:value-of select="FIELD_ITEM2" />
          </FIELD_ITEM2>
          <FIELD_ITEM3>
            <xsl:value-of select="FIELD_ITEM3" />
          </FIELD_ITEM3>
          <DETAIL>
            <FIELD_DETAIL1>
              <xsl:value-of select="FIELD_DETAIL1" />
            </FIELD_DETAIL1>
            <FIELD_DETAIL2>
              <xsl:value-of select="FIELD_DETAIL2" />
            </FIELD_DETAIL2>
          </DETAIL>
        </ITEM>
        <ITEM>
          <FIELD_ITEM1>ITEM1</FIELD_ITEM1>
        </ITEM>
      </XML>
    </xsl:template>
</xsl:stylesheet>