xsl-list
[Top] [All Lists]

RE: Selecting a range of siblings between specified elements.

2004-03-08 07:26:26
Hi,

I'm currently a little puzzled on how to select a range of 
siblings between 
specified elements, e.g.

<?xml version="1.0"?>
<doc>
<a>cont1</a><b/><b/>
<a>cont2</a><b/><b/>
<a>cont3</a><b/><b/><c/><c/>
<a>cont4</a><b/><b/><c/><c/>
</doc>


I would like to select firstly the <b/><b/> of

<a>cont1</a><b/><b/>

e.g. a[. = 'cont1']/following-sibling::b[position() <= 2]
 
then the <b/><b/> of

<a>cont2</a><b/><b/>

then the <b/><b/> of

<a>cont3</a><b/><b/><c/><c/>

and finally the <b/><b/> of

<a>cont4</a><b/><b/><c/><c/>

Erm... I wonder if you mean

    <xsl:for-each select="a">
      <xsl:apply-templates 
select="following-sibling::b[generate-id(preceding-sibling::a[1]) = 
generate-id(current()) ]"/>
    </xsl:for-each>

I.e. you want to group b elements according to their previous a element. See 
Jeni's pages on grouping <http://jenitennison.com/xslt/grouping/>.

Cheers,

Jarno - KiEw: Graograman (Leæther Strip remix)

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>