Subject: RE: [xsl] Grouping in XSLT 2.0 with multiple grouping levels From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 1 Feb 2005 09:42:04 -0000 |
It's not clear what rules you are applying here. The first element that's treated differently from the others is <42_UeberschrG1>, and you haven't explained why. Nor have you explained why this element ends when you get to the <68_UnterschrL> element. To tackle this, we need some kind of description of the rules you are applying that determine when a sequence of consecutive elements is dropped down a level (that is, when a sequence of consecutive elements is considered to form a group.) Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Huditsch Roman [mailto:Roman.Huditsch@xxxxxxxxxxxxx] > Sent: 01 February 2005 08:24 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Grouping in XSLT 2.0 with multiple grouping levels > > Hi, > > Ok, I'll do my best in trying to explain my use case. > > I have to transform source files produced via the Upcast > conversion tool > into XML files valid to a given XML Schema. > My input files have a flat and arbitrary structure. > > Here is a sample input file: > > <?xml version="1.0" encoding="ISO-8859-1"?> > <document> > <part style="page: pageStyle1;"> > <section level="1"> > <heading class="02_BDGesBlatt" > level="1">bundesgesetzblatt</heading> > <par class="03_RepOesterr">f|r die > republik vsterreich</par> > <par class="04_AusgabeDaten">Jahrgang > 2004 Ausgegeben am 30. Dezember 2004 Teil I</par> > <par class="05_Kurztitel">180. > Bundesgesetz: <inline style="color: > #000000;">Abgabendnderungsgesetz 2004 - AbgDG 2004</inline> > </par> > <par class="05_Kurztitel">(NR: GP XXII > RV 686 AB 734 S. 89. BR: 7160 AB 7184 S. 717.)</par> > <par class="05_Kurztitel">[CELEX-Nr.: > 32003L0030, 32003L0096]</par> > <par class="11_Titel" style="color: > #000000; ">180. Bundesgesetz, mit dem das > Einkommensteuergesetz 1988, das Kvrperschaftsteuergesetz > 1988, das Umgr|ndungssteuergesetz, das Umsatzsteuergesetz > 1994, das Gesundheits- und Sozialbereich-Beihilfengesetz > 1996, das Internationale Steuerverg|tungsgesetz, das > Geb|hrengesetz 1957, das Konsulargeb|hrengesetz 1992, das > Investmentfondsgesetz 1993, das EU-Quellensteuergesetz, das > EG-Amtshilfegesetz, das Normverbrauchsabgabegesetz, das > Mineralvlsteuergesetz 1995, das Kommunalsteuergesetz 1993, > das Neugr|ndungs-Fvrderungsgesetz, die Bundesabgabenordnung, > das Abgabenverwaltungsorganisationsgesetz, das > Zollrechts-Durchf|hrungsgesetz, das Finanzstrafgesetz, das > Bewertungsgesetz 1955, das Erbschafts- und > Schenkungssteuergesetz 1955 sowie das Bundesbahngesetz > gedndert werden (Abgabendnderungsgesetz 2004 - AbgDG 2004)</par> > <par class="12_PromKl_EinlSatz">Der > Nationalrat hat beschlossen:</par> > <par class="42_UeberschrG1-">Artikel I</par> > <par class="43_UeberschrG2">Dnderung > des Einkommensteuergesetzes 1988</par> > <par class="12_PromKl_EinlSatz">Das > Einkommensteuergesetz 1988, BGBl. Nr. 400, zuletzt gedndert > durch das Bundesgesetz BGBl. I Nr. 57/2004, wird wie folgt > gedndert:</par> > <par class="21_NovAo1">1. In ' 3 Abs. 1 > Z 17 wird folgender Satz angef|gt:</par> > <par > class="23_Satz_(nach_Novao)">"Gutscheine f|r Mahlzeiten > bleiben bis zu einem Wert von 4,40 Euro pro Arbeitstag > steuerfrei, wenn die Gutscheine nur am Arbeitsplatz oder in > einer nahe gelegenen Gaststdtte zur dortigen Konsumation > eingelvst werden. Kvnnen die Gutscheine auch zur Bezahlung > von Lebensmitteln verwendet werden, die nicht sofort > konsumiert werden m|ssen, sind sie bis zu einem Betrag von > 1,10 Euro pro Arbeitstag steuerfrei."</par> > <par class="14_Abs">In der Novelle 1839 > wird der Inhalt nich gedndert.</par> > <par class="22_NovAo2">2. In ' 4 Abs. 4 > Z 5 tritt an die Stelle der Wortfolge <inline > class="992_Normal">"der Finanzlandesdirektion"</inline> die > Wortfolge <inline class="992_Normal">"des Finanzamtes Wien > 1/23"</inline>.</par> > <par class="21_NovAo1">3. ' 4 Abs. 4 Z > 7 lautet:</par> > <par > class="52_Ziffer_e1">"7.Aufwendungen f|r Aus- und > Fortbildungsma_nahmen im Zusammenhang mit der vom > Steuerpflichtigen ausge|bten oder einer damit verwandten > beruflichen Tdtigkeit und Aufwendungen f|r umfassende > Umschulungsma_nahmen, die auf eine tatsdchliche Aus|bung > eines anderen Berufes abzielen. Aufwendungen f|r Ndchtigungen > sind jedoch hvchstens im Ausma_ des den Bundesbediensteten > zustehenden Ndchtigungsgeldes der Hvchststufe bei Anwendung > des ' 13 Abs. 7 der Reisegeb|hrenvorschrift zu ber|cksichtigen."</par> > <par class="68_UnterschrL" > xml:lang="en" style="word-break-inside: hyphenate; ">Fischer</par> > <par class="68_UnterschrL" > xml:lang="en" style="word-break-inside: hyphenate; ">Sch|ssel</par> > </section> > </part> > </document> > > > Ok, so far so good. Having such an input file, I need to > group various elements (with <xsl:for-each-group starting-with>). > > At the end I would like to get a file like: > > <document> > <part style="page: pageStyle1;"> > <section level="1"> > <heading class="02_BDGesBlatt" > level="1">bundesgesetzblatt</heading> > <par class="03_RepOesterr">f|r die > republik vsterreich</par> > <par class="04_AusgabeDaten">Jahrgang > 2004 Ausgegeben am 30. Dezember 2004 Teil I</par> > <par class="05_Kurztitel">180. > Bundesgesetz: <inline style="color: > #000000;">Abgabendnderungsgesetz 2004 - AbgDG 2004</inline> > </par> > <par class="05_Kurztitel">(NR: GP XXII > RV 686 AB 734 S. 89. BR: 7160 AB 7184 S. 717.)</par> > <par class="05_Kurztitel">[CELEX-Nr.: > 32003L0030, 32003L0096]</par> > <par class="11_Titel" style="color: > #000000; ">180. Bundesgesetz, mit dem das > Einkommensteuergesetz 1988, das Kvrperschaftsteuergesetz > 1988, das Umgr|ndungssteuergesetz, das Umsatzsteuergesetz > 1994, das Gesundheits- und Sozialbereich-Beihilfengesetz > 1996, das Internationale Steuerverg|tungsgesetz, das > Geb|hrengesetz 1957, das Konsulargeb|hrengesetz 1992, das > Investmentfondsgesetz 1993, das EU-Quellensteuergesetz, das > EG-Amtshilfegesetz, das Normverbrauchsabgabegesetz, das > Mineralvlsteuergesetz 1995, das Kommunalsteuergesetz 1993, > das Neugr|ndungs-Fvrderungsgesetz, die Bundesabgabenordnung, > das Abgabenverwaltungsorganisationsgesetz, das > Zollrechts-Durchf|hrungsgesetz, das Finanzstrafgesetz, das > Bewertungsgesetz 1955, das Erbschafts- und > Schenkungssteuergesetz 1955 sowie das Bundesbahngesetz > gedndert werden (Abgabendnderungsgesetz 2004 - AbgDG 2004)</par> > <par class="12_PromKl_EinlSatz">Der > Nationalrat hat beschlossen:</par> > > <42_UeberschrG1> > <titel>Artikel I</titel> > <43_UeberschrG2> > <titel>Dnderung des > Einkommensteuergesetzes 1988</titel> > <par > class="12_PromKl_EinlSatz">Das Einkommensteuergesetz 1988, > BGBl. Nr. 400, zuletzt gedndert durch das Bundesgesetz BGBl. > I Nr. 57/2004, wird wie folgt gedndert:</par> > <NovAo> > <absatz>1. In ' > 3 Abs. 1 Z 17 wird folgender Satz angef|gt:</absatz> > > <23_Satz_(nach_Novao)>"Gutscheine f|r Mahlzeiten bleiben bis > zu einem Wert von 4,40 Euro pro Arbeitstag steuerfrei, wenn > die Gutscheine nur am Arbeitsplatz oder in einer nahe > gelegenen Gaststdtte zur dortigen Konsumation eingelvst > werden. Kvnnen die Gutscheine auch zur Bezahlung von > Lebensmitteln verwendet werden, die nicht sofort konsumiert > werden m|ssen, sind sie bis zu einem Betrag von 1,10 Euro pro > Arbeitstag steuerfrei."</23_Satz_(nach_Novao)> > </NovAo> > <par class="14_Abs">In > der Novelle 1839 wird der Inhalt nich gedndert.</par> > <NovAo> > <absatz>2. In ' > 4 Abs. 4 Z 5 tritt an die Stelle der Wortfolge <inline > class="992_Normal">"der Finanzlandesdirektion"</inline> die > Wortfolge <inline class="992_Normal">"des Finanzamtes Wien > 1/23"</inline>.</absatz> > </NovAo> > <NovAo> > <absatz>3. ' 4 > Abs. 4 Z 7 lautet:</absatz> > > <52_Ziffer_e1>"7.Aufwendungen f|r Aus- und > Fortbildungsma_nahmen im Zusammenhang mit der vom > Steuerpflichtigen ausge|bten oder einer damit verwandten > beruflichen Tdtigkeit und Aufwendungen f|r umfassende > Umschulungsma_nahmen, die auf eine tatsdchliche Aus|bung > eines anderen Berufes abzielen. Aufwendungen f|r Ndchtigungen > sind jedoch hvchstens im Ausma_ des den Bundesbediensteten > zustehenden Ndchtigungsgeldes der Hvchststufe bei Anwendung > des ' 13 Abs. 7 der Reisegeb|hrenvorschrift zu > ber|cksichtigen."<52_Ziffer_e1> > </NovAo> > </43_UeberschrG2> > </42_UeberschrG1> > <par class="68_UnterschrL" > xml:lang="en" style="word-break-inside: hyphenate; ">Fischer</par> > <par class="68_UnterschrL" > xml:lang="en" style="word-break-inside: hyphenate; ">Sch|ssel</par> > </section> > </part> > </document> > > > > All elements in the source document containing "NovAo" should > be treated identically. > There are of course other elements which need to be grouped, > but for a better understanding > I have put them out of the source file. > > I managed to come up with a working version, but I am sure > there are a lot of problems in it. > I decided to split up the entire transformation in multiple > stylesheets where each of them groups > another element. I thought that would be best because I can't > rely on any element existing in my > source document and some elements like "NovAo" need special care. > > How would you deal with such requirements? > How should a stylesheet doing such transformations look like? > I first tried to write a template for "section" and do the > grouping there, > but that didn't work out, since I don't want every child > element to be grouped... > > Every help is very much appreciated! > > I first wanted to send you one of my stylesheets, > but I am doing other element conversions as well, so it > wouldn't produce the simple structure shown above... > > wbr, > Roman > > > -----Urspr|ngliche Nachricht----- > > Von: Michael Kay [mailto:mike@xxxxxxxxxxxx] > > Gesendet: Dienstag, 1. Februar 2005 01:08 > > An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Betreff: RE: [xsl] from start tag A to end tag B > > > > > Is there any resource showing some sophisticated grouping > solutions > > > using XSLT 2.0? > > > I just take a look at Michael's XSLT 2.0 reference, but I > need some > > > examples with a more complex and felxible structure... > > > > I think you need to post a problem and we'll see what we can > > do to provide a solution. > > > > I could write an essay on recursive grouping but it might be > > addressing a problem that you haven't got... > > > > Michael Kay > > http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Grouping in XSLT 2.0 with mul, Huditsch Roman | Thread | RE: [xsl] Optimization Question, Michael Kay |
[xsl] Issue with xsl:sort - does no, Jon Bråten | Date | Re: [xsl] Issue with xsl:sort - doe, David Carlisle |
Month |