|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: (Probably trivial) grouping problem
Use the following transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kFollParas" match="para[not(@title)]"
use="generate-id(preceding-sibling::para[@title][1])"/>
<xsl:template match="para[@title]">
<section>
<title><xsl:value-of select="@title"/></title>
<para><xsl:value-of select="."/></para>
<xsl:copy-of select="key('kFollParas', generate-id())"/>
</section>
</xsl:template>
<xsl:template match="para[not(@title)]"/>
</xsl:stylesheet>
When applied on your source.xml:
<text>
<para title="title1">
some text
</para>
<para>
a para without a title
</para>
<para title="title2">
more text
</para>
<para>
yet another untitled para
</para>
</text>
the wanted result is produced:
<section>
<title>title1</title>
<para>
some text
</para>
<para>
a para without a title
</para>
</section>
<section>
<title>title2</title>
<para>
more text
</para>
<para>
yet another untitled para
</para>
</section>
Hope this helped.
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
"Stefan Tilkov" <stefan.tilkov@xxxxxxxxx> wrote in message
news:OFF1F431D7.102B9DE9-ONC1256D68.002AEF58-C1256D68.002AFA73@xxxxxxxxxxxx
> I can't for the life of me figure out how to solve a simple problem. I
> know that it is related to grouping, but my XSL (and XPath) knowlegde is
> not up to translating answers given to similar problems to my particular
> case.
>
> I have a couple of paragrahps, marked up this way:
>
> <para title="title1">
> some text
> </para>
> <para>
> a para without a title
> </para>
> <para title="title2">
> more text
> </para>
> <para>
> yet another untitled para
> </para>
>
> I want to turn them into this:
>
> <section>
> <title>title1</title>
> <para>
> some text
> </para>
> <para>
> a para without a title
> </para>
> </section>
> <section>
> <title>title2</title>
> <para>
> more text
> </para>
> <para>
> yet another untitled para
> </para>
> </section>
>
> That is, I want to create sections from paragraphs, turning the title into
> an element belonging to the section. My experiments with following-sibling
> and preceeding-sibling all had the problem that *all* paragraphs without a
> title were returned, and I somehow need to get access to only those before
> the next para with a title.
>
> Any help would be greatly appreciated.
>
> Stefan
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|

Cart








