|
Subject: Re: [xsl] with XPath 1.0, select all following sibling elements of name "foo" up to the first non-"foo" element From: "Leo Studer leo.studer@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 19 Feb 2021 16:43:06 -0000 |
David, sibling recursion over the foo elements...
<xsl:template match="b">
<zzz>
<xsl:apply-templates select="*[1]/self::foo"/>
</zzz>
</xsl:template>
<xsl:template match="foo">
<xsl:copy-of select="."/>
<xsl:apply-templates select="following-sibling::*[1]/self::foo"/>
</xsl:template>
Cheers
Leo
> On 18 Feb 2021, at 22:35, David Carlisle d.p.carlisle@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> Given
>
> <x>
>
> <b>
> <foo>1</foo>
> <foo>2</foo>
> <bar>x</bar>
> <foo>3</foo>
> </b>
>
> <b>
> <foo>4</foo>
> <foo>5</foo>
> <foo>6</foo>
> </b>
>
> <b>
> <bar>y</bar>
> <foo>7</foo>
> <foo>8</foo>
> </b>
>
> </x>
>
>
> this stylesheet
>
> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform
<http://www.w3.org/1999/XSL/Transform>">
>
> <xsl:template match="b">
> <zzz>
> <xsl:apply-templates mode="onlyfoo" select="*[1]"/>
> </zzz>
> </xsl:template>
>
> <xsl:template mode="onlyfoo" match="*"/>
>
> <xsl:template mode="onlyfoo" match="foo">
> <xsl:copy-of select="."/>
> <xsl:apply-templates mode="onlyfoo" select="following-sibling::*[1]"/>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> produces
>
>
> <zzz><foo>1</foo><foo>2</foo></zzz>
>
> <zzz><foo>4</foo><foo>5</foo><foo>6</foo></zzz>
>
> <zzz/>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] with XPath 1.0, select al, Wendell Piez wapiez@ | Thread | Re: [xsl] with XPath 1.0, select al, Wendell Piez wapiez@ |
| Re: [xsl] with XPath 1.0, select al, Wolfhart Totschnig w | Date | Re: [xsl] with XPath 1.0, select al, Wendell Piez wapiez@ |
| Month |