[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: problem with creating structure
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><h2>EinfC<hrung </h2> <p>AuCer ihnen gibt es aber auch andere, die vermuten, aus der Schilderung des inneren Erlebens primitiver StC$mme mit ihrer einfachen, mehr geschlossenen Weltanschauung nicht</p> <p>Dazu 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 des</p> <p>Entsprechend 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</p> ... <sect1> <title>I.Teil: Der Mensch B- ein <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 nicht nur SchlC<sse auf die Vorgeschichte der KulturvC6lker ziehen zu kC6nnen, sondern daC sie auch Fingerzeige geben fC<r manche uns noch nicht ganz geklC$rte Fragen, die der gewaltige Umbruch unseres heimatlichen Volkslebens im letzten Jahrzehnt uns gestellt [hat]. Welche Wechselbeziehungen da bestehen kC6nnen, sieht der besonders, dem ein Einblick in den Mechanismus des fremden Volkslebens gegeben ist und der auch die VorgC$nge in der Heimat mit pochendem Herzen verfolgt und miterlebt hat.</para> </sect1>
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|