[Home] [By Thread] [By Date] [Recent Entries]
At 2007-11-11 22:48 +0100, Andreas Peter wrote:
Quoting "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>:At 2007-11-11 22:05 +0100, Andreas Peter wrote:XSL exasperates me! I have the following XML structure:
But I am concerned that the end of the text in the paragraph under <sect1> doesn't match the content after the first <h2> ... I implied from your definition that the same text appears twice: Leib</title>
So I think the following is an XSLT 2 approach to your problem. Right away one should think of using group-starting-with= because you are moving from a flat structure to a nested structure. I hope this helps! . . . . . . . . . . . . . Ken
<xsl:output indent="yes"/> <!--main structure-->
<xsl:template match="/">
<set>
<book>
<bookinfo/>
<xsl:apply-templates/>
</book>
</set>
</xsl:template><!--main content--> <xsl:template match="Textabschnitt"> <!--only handle the title and the first expected section--> <xsl:apply-templates select="h1 | h2[1]"/> </xsl:template> <!--do a title--> <xsl:template match="h1"> <title><xsl:apply-templates/></title> </xsl:template> <!--catch the first section and reconstruct the content as a chapter-->
<xsl:template match="h2">
<chapter>
<!--put out the first H2 as content-->
<title><xsl:apply-templates/></title>
<para>
<xsl:for-each-group select="following-sibling::*"
group-starting-with="h2|h3|h4">
<xsl:if test="position()=1">
<!--copy the first H2 as the body text-->
<xsl:copy-of select="current-group()[self::p]/node()"/>
</xsl:if>
</xsl:for-each-group>
</para>
<!--put out the first content *again* but
using the second H2 as a title-->
<xsl:for-each-group select=". | following-sibling::*"
group-starting-with="h2|h3|h4">
<!--determine the paragraph content regardless of where we are-->
<xsl:variable name="section-content">
<para>
<xsl:copy-of select="current-group()[self::p]/node()"/>
</para>
</xsl:variable>
<xsl:choose>
<xsl:when test="position()=1">
<!--must be repeating the first content, so use the second H2
for the title-->
<sect1>
<title>
<xsl:apply-templates select="following-sibling::h2/node()"/>
</title>
<xsl:copy-of select="$section-content"/>
</sect1>
</xsl:when>
<xsl:when test="self::h2">
<!--do nothing because the second H2 has already been handled-->
</xsl:when>
<xsl:otherwise>
<!--this is a subsequent section-->
<xsl:element name="sect{number(substring-after(name(.),'h')) -
1}">
<title><xsl:apply-templates/></title>
<xsl:copy-of select="$section-content"/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</chapter>
</xsl:template></xsl:stylesheet> t:\ftemp>call xslt2 andreas.xml andreas.xsl andreas.out t:\ftemp>type andreas.out
<?xml version="1.0" encoding="UTF-8"?>
<set>
<book>
<bookinfo/>
<title>Geistiger Volksbesitz der Kameruner im Blickfeld des
Missionars </title>
<chapter>
<title>EinfC<hrung </title>
<para>AuCer ihnen gibt es aber auch andere, die vermuten, aus
der Schilderung des inneren
Erlebens primitiver StC$mme mit ihrer einfachen, mehr
geschlossenen Weltanschauung nichtDazu sind die
Blicke vieler auf unsere einstigen Kolonien
gerichtet in der bestimmten
Erwartung, daC uns das Ende des gegenwC$rtigen Krieges
wieder in den Besitz desEntsprechend seinem Beruf
hat der Verfasser auch den Titel
seines Buches gewC$hlt. Damit
mag fC<r viele schon C<ber das Folgende ein Urteil gefC$llt
sein: Geschaut mit beschrC$nktem
und voreingenommenem Blick! Nun ist der Verfasser dankbar
manchen MC$nnern der
Wissenschaft der Heimat, die durch sichtende Arbeit im
Studierzimmer mancherle</para>
<sect1>
<title>I.Teil: Der o;?Mensch B- ein o;?Leib </title>
<para>AuCer ihnen gibt es aber auch andere, die vermuten, aus
der Schilderung des inneren
Erlebens primitiver StC$mme mit ihrer einfachen, mehr
geschlossenen Weltanschauung nichtDazu sind die
Blicke vieler auf unsere einstigen Kolonien
gerichtet in der bestimmten
Erwartung, daC uns das Ende des gegenwC$rtigen Krieges
wieder in den Besitz desEntsprechend seinem Beruf
hat der Verfasser auch den Titel
seines Buches gewC$hlt. Damit
mag fC<r viele schon C<ber das Folgende ein Urteil gefC$llt
sein: Geschaut mit beschrC$nktem
und voreingenommenem Blick! Nun ist der Verfasser dankbar
manchen MC$nnern der
Wissenschaft der Heimat, die durch sichtende Arbeit im
Studierzimmer mancherle</para>
</sect1>
<sect2>
<title>Allgemeines</title>
<para>So ist auch die Einheit
„Mensch“ ein Leib-Geistwesen, denn
im Normalzustand besteht sein
KC6rper aus der eyobo „HC<lle“, in der, sie ganz
ausfC<llend, mudi „die Lebensseele“ webt.
Sie ist der eigentliche TrC$ger des Lebens. Ohne diese
Lebensseele ist der Mensch inWas denkt nun der
Kameruner C<ber seine leibliche
Existenzform, die seine Lebensseele an
die Sichtbarkeit bindet? </para>
</sect2>
<sect3>
<title>2. o;?Beerdigungssitten und o;?Totenfeiern bei
den Bakwiri </title>
<para>Die Einzelheiten der
verschiedenen GebrC$uche variieren bei
den verschiedenen StC$mmen, in
den groCen ZC<gen aber C$hneln sie sich. </para>
</sect3>
</chapter>
</book>
</set>
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@xxxxxxxxxxxxxxxxxxxx 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
|

Cart



