Subject: Re: [xsl] Finding the following sibling of same type From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Sun, 29 Aug 2004 21:47:20 +0100 |
Hi Kenneth, > Actually, the real problem is for me to write an XPath expression > that will select all children of "main" from the first "first" upto > (but exluding) the next "first". Hence my desire to locate the > position of the next "first". The easiest way to do this is to create a key that indexes all the non-<first> children of the <main> element by their nearest preceding <first> element: <xsl:key name="first-group" match="main/*[not(self::first)]" use="generate-id(preceding-sibling::first[1])" /> Then you can get all the elements that 'belong to' the first <first> element using: key('first-group', generate-id(/main/first[1])) I'm using generate-id() here, but your actual XML might have an id attribute or something similar that you could use to uniquely identify the <first> elements instead. If you're trying to transform into: <main> <first> <second> <third>...</third> </second> <second> <third>...</third> </second> </first> <first> <second>...</second> </first> </main> and you're using XSLT 2.0, then you want to use the <xsl:for-each-group> with group-starting-with. In XSLT 1.0 using keys like the one above is probably the simplest approach. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Finding the following sib, J.Pietschmann | Thread | RE: [xsl] Finding the following sib, Michael Kay |
Re: [xsl] variable question, Jeni Tennison | Date | Re: [xsl] collapsing number ranges, Jeni Tennison |
Month |