-----Ursprüngliche Nachricht-----
Von: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com]
Gesendet: Dienstag, 1. Februar 2005 10:42
An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Betreff: RE: [xsl] Grouping in XSLT 2.0 with multiple grouping levels
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(_dot_)Huditsch(_at_)lexisnexis(_dot_)at]
Sent: 01 February 2005 08:24
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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 österreich</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;">Abgabenänderungsgesetz 2004 - AbgÄG 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 Körperschaftsteuergesetz 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 Mineralölsteuergesetz 1995, das
Kommunalsteuergesetz 1993, das Neugründungs-Förderungsgesetz, die
Bundesabgabenordnung, das
Abgabenverwaltungsorganisationsgesetz, das
Zollrechts-Durchführungsgesetz, das Finanzstrafgesetz, das
Bewertungsgesetz 1955, das Erbschafts- und
Schenkungssteuergesetz 1955
sowie das Bundesbahngesetz geändert werden (Abgabenänderungsgesetz
2004 - AbgÄG 2004)</par>
<par class="12_PromKl_EinlSatz">Der
Nationalrat hat
beschlossen:</par>
<par class="42_UeberschrG1-">Artikel I</par>
<par class="43_UeberschrG2">Änderung
des Einkommensteuergesetzes
1988</par>
<par class="12_PromKl_EinlSatz">Das
Einkommensteuergesetz 1988,
BGBl. Nr. 400, zuletzt geändert durch das Bundesgesetz BGBl. I Nr.
57/2004, wird wie folgt geändert:</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
Gaststätte
zur dortigen Konsumation eingelöst werden. Können 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
geändert.</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 Tätigkeit und
Aufwendungen für umfassende Umschulungsmaßnahmen, die auf eine
tatsächliche Ausübung eines anderen Berufes abzielen.
Aufwendungen für
Nächtigungen sind jedoch höchstens im Ausmaß des den
Bundesbediensteten zustehenden Nächtigungsgeldes der
Höchststufe 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 österreich</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;">Abgabenänderungsgesetz 2004 - AbgÄG 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 Körperschaftsteuergesetz 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 Mineralölsteuergesetz 1995, das
Kommunalsteuergesetz 1993, das Neugründungs-Förderungsgesetz, die
Bundesabgabenordnung, das
Abgabenverwaltungsorganisationsgesetz, das
Zollrechts-Durchführungsgesetz, das Finanzstrafgesetz, das
Bewertungsgesetz 1955, das Erbschafts- und
Schenkungssteuergesetz 1955
sowie das Bundesbahngesetz geändert werden (Abgabenänderungsgesetz
2004 - AbgÄG 2004)</par>
<par class="12_PromKl_EinlSatz">Der
Nationalrat hat
beschlossen:</par>
<42_UeberschrG1>
<titel>Artikel I</titel>
<43_UeberschrG2>
<titel>Änderung des
Einkommensteuergesetzes 1988</titel>
<par
class="12_PromKl_EinlSatz">Das Einkommensteuergesetz 1988,
BGBl. Nr.
400, zuletzt geändert durch das Bundesgesetz BGBl.
I Nr. 57/2004, wird wie folgt geändert:</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 Gaststätte zur
dortigen
Konsumation eingelöst werden. Können 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 geändert.</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 Tätigkeit und Aufwendungen für umfassende
Umschulungsmaßnahmen, die auf eine tatsächliche Ausübung
eines anderen
Berufes abzielen. Aufwendungen für Nächtigungen sind jedoch
höchstens
im Ausmaß des den Bundesbediensteten zustehenden
Nächtigungsgeldes der
Höchststufe 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(_at_)saxonica(_dot_)com]
Gesendet: Dienstag, 1. Februar 2005 01:08
An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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/
--~------------------------------------------------------------------
XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--