xsl-list
[Top] [All Lists]

group but keep order of elements

2002-10-21 09:00:21
Hallo,
and sorry for my simple question. I wasn`t able to get the answer at dawson or 
in the archive. I am not a programmer, just a person in a publishers house 
dealing with xml exports and now with the need of gaining any xslt knowlegde.
My problem  is always the beginning, where to start. 

A few weeks ago I had a question concerning adding elements. I have an xml 
document with numerous entries. Some do have the element <UbNummer> and some 
don`t.
Therefore I needed a solution to add a new element <texteintrag> to these 
elements without <UbNummer>. I continued with adding the element <uebung> at 
the equivilant position before the entry with <UbNummer>. 
Now I was asked whether it is possible to put the elements <texteintrag> and 
<uebung> not around every entry, but around all entries up to the next change. 
Actually it is grouping, but I do not know how to keep the order of my entries. 
Is it possible to continue from where I am now or do I have to change my code 
entirely?


The wanted result:

<total>
        <texteintrag>
           <entry>
                        <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                        </Fundstelle>
                </MAT>
                <LO>
                        <TitelEins></TitelEins>
                </LO>
        </entry>
        <entry>
                        <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                        </Fundstelle>
                </MAT>
                <LO>
                        <TitelEins></TitelEins>
                </LO>
        </entry>
...
     </texteintrag>
     <uebung>   
        <entry>
                <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                                <UbNummer>1</UbNummer>
                        </Fundstelle>
                </MAT>
                <LO >                   
                        <Text></Text>
                </LO>
                <entry>
                <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                                <UbNummer>1</UbNummer>
                        </Fundstelle>
                </MAT>
                <LO >                   
                        <Text></Text>
                </LO>
        </entry>
...
  </uebung>
<texteintrag>
...
</texteintrag>
<uebung>
...
</uebung>
...
</total>

The Original:

<total>
        <entry>
                <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                        </Fundstelle>
                </MAT>
                <LO>
                        <TitelEins></TitelEins>
                </LO>
        </entry>
        <entry>
                <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                                <UbNummer>1</UbNummer>
                        </Fundstelle>
                </MAT>
                <LO >                   
                        <Text></Text>
                </LO>
        </entry>
...
</total>


My stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<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="no"/>
<xsl:template match="entry[not(MAT/Fundstelle/UbNummer)]">
<xsl:copy>  
<texteintrag>
<xsl:apply-templates/>
</texteintrag>
</xsl:copy>
</xsl:template>
<xsl:template match="entry[(MAT/Fundstelle/UbNummer)]">
<xsl:copy>  
<uebung>
<xsl:apply-templates/>
</uebung>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

After the transformation:

<total>
        <entry>
          <texteintrag>
                <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                        </Fundstelle>
                </MAT>
                <LO>
                        <TitelEins></TitelEins>
                </LO>
         </texteintrag>
        </entry>
        <entry>
          <uebung>
                <MAT>
                        <Fundstelle>
                                <TitelNr></TitelNr>
                                <UbNummer>1</UbNummer>
                        </Fundstelle>
                </MAT>
                <LO >                   
                        <Text></Text>
                </LO>
           </uebung>
        </entry>
...
</total>

Even if it is simple I would be quite happy to recieve an answer.

Best Regards
Elke Naraschewski




 
*******************************************************
Elke Naraschewski - Ernst Klett Verlag GmbH -
Leistungscenter Mediengestaltung

Rotebühlstr. 77 - 70178 Stuttgart
Tel.: 0711/6672-1116 - Fax: 0711/6672-2023 - E-mail:
e(_dot_)naraschewski(_at_)klett-mail(_dot_)de

Stuttgart HRB 10746 - Verleger: Dr.h.c. Michael Klett
Geschäftsführer: Johannes Leßmann - Harald Melcher - Dr. Tilmann Michaletz - 
Dr. Wolf Unkelbach (Vorsitz)





*******************************************************
Elke Naraschewski - Ernst Klett Verlag GmbH -
Leistungscenter Mediengestaltung

Rotebühlstr. 77 - 70178 Stuttgart
Tel.: 0711/6672-1116 - Fax: 0711/6672-2023 - E-mail:
e(_dot_)naraschewski(_at_)klett-mail(_dot_)de

Stuttgart HRB 10746 - Verleger: Dr.h.c. Michael Klett
Geschäftsführer: Johannes Leßmann - Harald Melcher - Dr. Tilmann Michaletz - 
Dr. Wolf Unkelbach (Vorsitz)


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>
  • group but keep order of elements, Naraschewski, E. <=