This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: how to zap content between sibling elements?
- From: "Helder da Rocha" <helder at argonavis dot com dot br>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 28 Aug 2002 17:05:10 -0300
- Subject: Re: [xsl] how to zap content between sibling elements?
- Organization: Argo Navis - Consultoria e Treinamento em Java e XML
- References: <20020828180130.35325.qmail@web13401.mail.yahoo.com>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Jay,
To get rid of the text between <k>s you need a XPath expression like:
following-sibling::k and not(preceding-sibling::k)
in the context of the <p> element for the text before, and another one,
reversed for the text after. The code below solves the problem you posted:
<xsl:template match="p">
<p><xsl:copy-of select="*[not(self::k)]" />
<xsl:apply-templates select="child::text()[following-sibling::k and
not(preceding-sibling::k)]" />
<grp><xsl:apply-templates select="k" /></grp>
<xsl:value-of select="following-sibling::text()" />
<xsl:apply-templates select="child::text()[preceding-sibling::k and
not(following-sibling::k)]" /></p>
</xsl:template>
<xsl:template match="k">
<k><xsl:apply-templates /></k>
</xsl:template>
Helder.
--
Helder da Rocha (helder@argonavis.com.br)
Web Consultant
www.argonavis.com.br
São Paulo, Brazil
+55 (11) 9291 0567
----- Original Message -----
From: "Jay Han" <hjhjjj@yahoo.com>
To: <xsl-list@lists.mulberrytech.com>
Sent: Wednesday, August 28, 2002 3:01 PM
Subject: [xsl] how to zap content between sibling elements?
> Hello all,
>
> I have a few siblings that I need to group together like this:
>
> original:
> <p> <!-- maybe some other element other than 'k' -->
> foo
> <k>A</k> bar <k>B</k> baz <k>C</k>
> quux and more stuff
> </p>
>
> goal:
> <p>
> foo
> <grp><k>A</k><k>B</k><k>C</k></grp>
> quux and more stuff
> </p>
>
> I can do the grouping but I am having difficulties zapping 'bar'
> and 'baz' between <k>'s. Currently I get:
> <p>
> foo
> <grp><k>A</k><k>B</k><k>C</k></grp> bar baz
> quux and more stuff
> </p>
> I think I need a condition to my default copying template
> to handle the case of "when in-between <k>'s zap the content".
> What combination of axes and predicates can I use to express
> this condition? Any hint or suggestion would be appreciated.
>
> thanks,
>
> -jay
>
>
> =====
> jhan@acm.org
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Finance - Get real-time stock quotes
> http://finance.yahoo.com
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list