|
Subject: Re: [xsl] ?group? but keep order of elements From: Bryan Schnabel <bryan.schnabel@xxxxxxxxxxxxx> Date: Tue, 22 Oct 2002 13:20:44 -0700 (PDT) |
Elke,
It turns out I had a chuckle about the "dawson"
reference, and sent the cryptic reply, but forgot to
include my silly punch-line (probably all the better).
As for your question, I assume you discovered, and
then decided against the Meunchian solution.
An alternative, then would be some recursive approach,
along the lines of:
<xsl:template match="total">
<totlal>
<xsl:apply-templates />
</totlal>
</xsl:template>
<xsl:template match="entry[MAT/Fundstelle/UbNummer]">
<xsl:if
test="not(preceding-sibling::*[1][MAT/Fundstelle/UbNummer])">
<uebung>
<xsl:copy-of select="." />
<xsl:for-each
select="following-sibling::*[1][MAT/Fundstelle/UbNummer]">
<xsl:call-template name="exercise-checker" />
</xsl:for-each>
</uebung>
</xsl:if>
</xsl:template>
<xsl:template
match="entry[not(MAT/Fundstelle/UbNummer)]">
<texteintrag>
<xsl:copy-of select="." />
</texteintrag>
</xsl:template>
<xsl:template name="exercise-checker">
<xsl:copy-of select="." />
<xsl:for-each
select="following-sibling::*[1][MAT/Fundstelle/UbNummer]">
<xsl:call-template name="exercise-checker" />
</xsl:for-each>
</xsl:template>
Which transforms this:
<total>
<entry>
<MAT>
<Fundstelle>
<TitelNr></TitelNr>
<UbNummer>0</UbNummer>
</Fundstelle>
</MAT>
<LO >
<Text></Text>
</LO>
</entry>
<entry>
<MAT>
<Fundstelle>
<TitelNr></TitelNr>
</Fundstelle>
</MAT>
<LO>
<TitelEins></TitelEins>
</LO>
</entry>
<entry>
<MAT>
<Fundstelle>
<TitelNr></TitelNr>
<UbNummer>1</UbNummer>
</Fundstelle>
</MAT>
<LO >
<Text></Text>
</LO>
</entry>
<entry>
<MAT>
<Fundstelle>
<TitelNr></TitelNr>
<UbNummer>2</UbNummer>
</Fundstelle>
</MAT>
<LO >
<Text></Text>
</LO>
</entry>
<entry>
<MAT>
<Fundstelle>
<TitelNr></TitelNr>
<UbNummer>3</UbNummer>
</Fundstelle>
</MAT>
<LO >
<Text></Text>
</LO>
</entry>
</total>
into this:
<totlal>
<uebung>
<entry>
<MAT>
<Fundstelle>
<TitelNr/>
<UbNummer>0</UbNummer>
</Fundstelle>
</MAT>
<LO>
<Text/>
</LO>
</entry>
</uebung>
<texteintrag>
<entry>
<MAT>
<Fundstelle>
<TitelNr/>
</Fundstelle>
</MAT>
<LO>
<TitelEins/>
</LO>
</entry>
</texteintrag>
<uebung>
<entry>
<MAT>
<Fundstelle>
<TitelNr/>
<UbNummer>1</UbNummer>
</Fundstelle>
</MAT>
<LO>
<Text/>
</LO>
</entry>
<entry>
<MAT>
<Fundstelle>
<TitelNr/>
<UbNummer>2</UbNummer>
</Fundstelle>
</MAT>
<LO>
<Text/>
</LO>
</entry>
<entry>
<MAT>
<Fundstelle>
<TitelNr/>
<UbNummer>3</UbNummer>
</Fundstelle>
</MAT>
<LO>
<Text/>
</LO>
</entry>
</uebung>
</totlal>
(some fine-tuning would still help)
Bryan
--- "Naraschewski, E." <e.naraschewski@xxxxxxxxxxxxx>
wrote:
> Hallo again,
> (my first mail today somehow did not get through to
> the list)
> again I read through the faqs (to Bryan S. Schnabel:
> the list with the p in it) and without any result.
> There are partly answers but not the answer I am
> looking for. I am not sure whether grouping is the
> right direction.
> I can not really fix a position. I can only say: Use
> the node <texteintrag> for all entries up to the
> next <uebung>, than take the node <uebung> up to the
> point where <texteintrag> starts again. Actually I
> would think of xsl:if or xsl:when, but if I choose
> these how can I keep the strucure? I simply need an
> xslt that transforms my xml, adds new elements and
> comprises the child elements and following siblings.
> Do I need something completely different to my
> stylesheet or is there a way to continue?
. . .
> Thanks in advance
> Elke
>
*******************************************************
> Elke Naraschewski - Ernst Klett Verlag GmbH -
> Leistungscenter Mediengestaltung
>
> Rotebühlstr. 77 - 70178 Stuttgart
> Tel.: 0711/6672-1116 - Fax: 0711/6672-2023 - E-mail:
> e.naraschewski@xxxxxxxxxxxxx
>
> Stuttgart HRB 10746 - Verleger: Dr.h.c. Michael
> Klett
> Geschäftsführer: Johannes Leßmann - Harald Melcher -
> Dr. Tilmann Michaletz - Dr. Wolf Unkelbach (Vorsitz)
>
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] ?group? but keep order of ele, Naraschewski, E. | Thread | [xsl] ?group? but keep order of ele, Naraschewski, E. |
| RE: [xsl] Removing duplicates, Clay Leeds | Date | RE: [xsl] XML in IE6, Mike Ferrando |
| Month |