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