At 2007-12-19 20:15 +0100, Andreas Peter wrote:
I have a problem with processing several nodes. My input document looks
like the following:
...
I use the following XSL for output:
...
The output should like this:
Here I'm stuck ... I cannot see why two <h2> elements are in the same
<Ebene2> and I've tried many ways to get them both into one and I've
given up:
<Ebene2>
<h2>1.2 Leben und Werk Ittmanns im �berblick<fn>Die
biographischen Daten
beruhen auf einem Nachruf zu Ittmann (KÀhler-Meyer 1964),
...</fn></h2>
<p>Ittmann schilderte mitunter, wie er selbst wÀhrend der Reise auf
FuÃ�mÀrschen seine afrikanischen Begleiter befragte. ...</p>
<h2>1.3 Quellenlage, Eingrenzung, Aufbau und Methodik</h2>
<p>Aus Ittmanns reichhaltigem Schaffen galt es inhaltlich auszuwÀhlen
...</p>
</Ebene2>
I cannot take any more time to try and figure out the above, but for
the rest, I think the code below does what you need.
Everything works fine except the <p>-elements from the
xsl:for-each-group. They are not processed properly.
Unfortunately, you don't explain what "properly" is, so I had to guess.
Any idea from the experts?
Making it a guessing game is not fun and it takes a lot of time ... in
the future I suggest you put into words what you need, in addition to
the data, so that volunteers don't have to guess. I cannot figure out
why <p> elements are sometimes grouped and sometimes not. I added
comments to explain the assertions I assumed.
Note the changes I made in the copying of node titles (your code was
losing the <name_geo> structure), and in the composition of element
names using an attribute value template (you had a redundant XPath if
expression).
I hope the code below helps get you started, but I can't help with the
above.
. . . . . . . . . . . Ken
p.s. also, my mailer does not handle UTF-8 well ... can you post
examples with an XML declaration of ISO-8859-1 (Latin1) so that old
mail systems don't get confused?
t:\ftemp>type andreas.xml
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<h01>Evangelium, afrikanisches Volkstum und geistiger Volksbesitz im
Denken des Missionars
Johannes Ittmann</h01>
<h02>bis zum ersten groen
<name_geo>Jamaika</name_geo>-Manuskript (ca.
1943) im Zusammenhang
der deutschen missionstheologischen Debatte 19091940</h02>
<h03>Magisterschrift</h03>
<p>zum Erwerb des Mag. theol.</p>
<p>nach der Ordnung der</p>
<bildunterschrift>
<p>Johannes Ittmann (18851963)</p>
</bildunterschrift>
<h1>1. Einleitung</h1>
<h2>1.1 Gott kommt frAOher als der
Missionar</h2>
<p>Gott kommt frAOher als der
Missionar so titelt ein Buch des
Befreiungstheologen Leonardo
Boff (1992). ...</p>
<p_e>Ittmann steht im Kontext der deutschen Missionstheologie seiner
Zeit, die davon ausgeht,
da das Volkstum
...</p_e>
<h2>1.2 Leben und Werk Ittmanns im berblick<fn>Die
biographischen Daten
beruhen auf einem
Nachruf zu Ittmann (KA?hler-Meyer 1964), ...</fn>
</h2>
<p>Ittmann schilderte mitunter, wie er selbst whrend der Reise auf
FuArschen seine
afrikanischen Begleiter befragte. ...</p>
<h2>1.3 Quellenlage, Eingrenzung, Aufbau und Methodik</h2>
<p>Aus Ittmanns reichhaltigem Schaffen galt es inhaltlich auszuwhlen
...</p>
<h1>2. Gott kommt frAOher als der
Missionar Inwiefern?</h1>
<h2>2.1 Einleitendes</h2>
<p>Gott kommt frAOher als der
Missionar so habe ich mit Leonardo
Boff
in der Einleitung
Ittmanns...</p>
<h3>2.1.1 Grobgestalt</h3>
<p>Die etwa 200 Seiten des Manuskriptes gliedern sich in eine Einleitung
von sechs Seiten und
vier Hauptteile:</p>
<h3>2.1.2 Ziele und Zielgruppen</h3>
<p>In der EinfAOhrung {I-VI} nennt Ittmann fAOnf Zielgruppen und
entsprechende Ziele:</p>
<h3>2.1.3 Methodenreflexion</h3>
<p>Gerade der letzte Punkt fordert ihn zur Klarlegung seiner Methode:
...</p>
<h4>Zu B. Leibesleben zwischen Geburt und Tod {14-24}</h4>
<p>Hier kommen beide zunA?chst auf die Beschneidung zu sprechen.
Johanssen (1931, 199-201)
...</p>
</Root>
t:\ftemp>type andreas.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<Teil>
<xsl:apply-templates select="Root"/>
</Teil>
</xsl:template>
<xsl:template match="Root">
<Titelei>
<xsl:call-template name="titelei"/>
</Titelei>
<inhalt>
<xsl:call-template name="inhalt"/>
</inhalt>
</xsl:template>
<xsl:template name="titelei">
<xsl:param name="t" select="1"/>
<xsl:param name="nodes" select="*"/>
<!--group according to the expected level-->
<xsl:for-each-group select="$nodes"
group-starting-with="*[name()=concat('h0',$t)]">
<xsl:choose>
<xsl:when test="name()=concat('h0',$t)">
<xsl:element name="h0{$t}">
<xsl:copy-of select="node()"/>
</xsl:element>
<!--only copy nodes from the expected level-->
<xsl:choose>
<xsl:when test="not(current-group()[position()>1]
[starts-with(local-name(.),'h0')])">
<!--there are no deeper levels, so copy everything up
until the next heading-->
<xsl:for-each-group select="current-group()[position()>1]"
group-starting-with="*[starts-with(local-name(.),'h')]">
<xsl:if test="position()=1">
<xsl:copy-of select="current-group()"/>
</xsl:if>
</xsl:for-each-group>
</xsl:when>
<xsl:otherwise>
<!--there are deeper levels, so go deep-->
<xsl:call-template name="titelei">
<xsl:with-param name="t" select="$t+1"/>
<xsl:with-param name="nodes"
select="current-group()[position()!=1]"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>
<xsl:template name="inhalt">
<xsl:param name="i" select="1"/>
<xsl:param name="nodes" select="*"/>
<!--group according to the expected level-->
<xsl:for-each-group select="$nodes"
group-starting-with="*[name()=concat('h',$i)]">
<xsl:choose>
<xsl:when test="name()=concat('h',$i)">
<xsl:element name="Ebene{$i}">
<xsl:element name="h{$i}">
<xsl:copy-of select="node()"/>
</xsl:element>
<!--only copy nodes from the expected level up
until the next heading-->
<xsl:for-each-group select="current-group()[position()>1]"
group-starting-with="*[starts-with(local-name(.),'h')]">
<xsl:if test="position()=1">
<xsl:copy-of select="current-group()"/>
</xsl:if>
</xsl:for-each-group>
<xsl:if test="current-group()[position()>1]
[starts-with(local-name(.),'h')]">
<!--there are deeper levels, so go deep-->
<xsl:call-template name="inhalt">
<xsl:with-param name="i" select="$i+1"/>
<xsl:with-param name="nodes"
select="current-group()[position()!=1]"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
t:\ftemp>call xslt2 andreas.xml andreas.xsl andreas-out.xml
t:\ftemp>type andreas-out.xml
<?xml version="1.0" encoding="UTF-8"?>
<Teil>
<Titelei>
<h01>Evangelium, afrikanisches Volkstum und geistiger Volksbesitz im
Denken des Missionars
Johannes Ittmann</h01>
<h02>bis zum ersten groen
<name_geo>Jamaika</name_geo>-Manuskript (ca.
1943) im Zusammenhang
der deutschen missionstheologischen Debatte 19091940</h02>
<h03>Magisterschrift</h03>
<p>zum Erwerb des Mag. theol.</p>
<p>nach der Ordnung der</p>
<bildunterschrift>
<p>Johannes Ittmann (18851963)</p>
</bildunterschrift>
</Titelei>
<inhalt>
<Ebene1>
<h1>1. Einleitung</h1>
<h2>1.1 Gott kommt frAOher als der
Missionar</h2>
<p>Gott kommt frAOher als der
Missionar so titelt ein Buch des
Befreiungstheologen Leonardo
Boff (1992). ...</p>
<p_e>Ittmann steht im Kontext der deutschen Missionstheologie seiner
Zeit, die davon ausgeht,
da das Volkstum
...</p_e>
<Ebene2>
<h2>1.1 Gott kommt frAOher als der
Missionar</h2>
<p>Gott kommt frAOher als der
Missionar so titelt ein Buch des
Befreiungstheologen Leonardo
Boff (1992). ...</p>
<p_e>Ittmann steht im Kontext der deutschen Missionstheologie seiner
Zeit, die davon ausgeht,
da das Volkstum
...</p_e>
</Ebene2>
<Ebene2>
<h2>1.2 Leben und Werk Ittmanns im berblick<fn>Die
biographischen Daten
beruhen auf einem
Nachruf zu Ittmann (KA?hler-Meyer 1964), ...</fn>
</h2>
<p>Ittmann schilderte mitunter, wie er selbst whrend der Reise auf
FuArschen seine
afrikanischen Begleiter befragte. ...</p>
</Ebene2>
<Ebene2>
<h2>1.3 Quellenlage, Eingrenzung, Aufbau und Methodik</h2>
<p>Aus Ittmanns reichhaltigem Schaffen galt es inhaltlich auszuwhlen
...</p>
</Ebene2>
</Ebene1>
<Ebene1>
<h1>2. Gott kommt frAOher als der
Missionar Inwiefern?</h1>
<h2>2.1 Einleitendes</h2>
<p>Gott kommt frAOher als der
Missionar so habe ich mit Leonardo
Boff
in der Einleitung
Ittmanns...</p>
<Ebene2>
<h2>2.1 Einleitendes</h2>
<p>Gott kommt frAOher als der
Missionar so habe ich mit Leonardo
Boff
in der Einleitung
Ittmanns...</p>
<Ebene3>
<h3>2.1.1 Grobgestalt</h3>
<p>Die etwa 200 Seiten des Manuskriptes gliedern sich in eine Einleitung
von sechs Seiten und
vier Hauptteile:</p>
</Ebene3>
<Ebene3>
<h3>2.1.2 Ziele und Zielgruppen</h3>
<p>In der EinfAOhrung {I-VI} nennt Ittmann fAOnf Zielgruppen und
entsprechende Ziele:</p>
</Ebene3>
<Ebene3>
<h3>2.1.3 Methodenreflexion</h3>
<p>Gerade der letzte Punkt fordert ihn zur Klarlegung seiner Methode:
...</p>
<Ebene4>
<h4>Zu B. Leibesleben zwischen Geburt und Tod {14-24}</h4>
<p>Hier kommen beide zunA?chst auf die Beschneidung zu sprechen.
Johanssen (1931, 199-201)
...</p>
</Ebene4>
</Ebene3>
</Ebene2>
</Ebene1>
</inhalt>
</Teil>
t:\ftemp>rem Done!
--
Comprehensive in-depth XSLT2/XSL-FO1.1 classes: Austin TX,Jan-2008
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds: publicly-available developer resources and training
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--