[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Grouping immediate follow sibling

Subject: RE: Grouping immediate follow sibling
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 1 Feb 2005 00:06:56 -0000
xslt follow sibling
> I receive XML similar to that shown below:
>  
> <bodyFrag>
> 	<p>title</p>
> 	<ProgAbs>some text</ProgAbs>
> 	<ProgAbs>More text</ProgAbs>
> 	<ProgAbs>Even more</ProgAbs>
> 	<p>Paragraph</p>
> 	<p>Beispiel:</p>
> 	<ProgAbs>some text</ProgAbs>
> 	<ProgAbs>More text</ProgAbs>
> 	<ProgAbs>Even more</ProgAbs>
> </bodyFrag>
> 
> I need to process it as follows:
> 
> 	1. When I see a <p> containing 'title', output it in 
> some way. (I
> can do this part).

A description of the processing that starts "When I see" is not a good place
to start. It suggests you're thinking in terms of sequential processing.

> 
> 	2, Select only the immediately following <ProgAbs> 
> sibling elements.
> I.e. the 3 ProgAbs elements with content immediately following the <p>
> element selected in 1 above.
> 
> Using 'following-sibling::ProgAbs' gives me all the siblings 
> of that name,
> as it should. I just need to know how to construct an 
> expression to select
> only those <ProgAbs> that follow on immendiately after the 
> <p> element.
> 

In XSLT 2.0 you can do this with for-each-group.

In 1.0 there are two main approaches: one is to use
generate-id(preceding-sibling::p[1]) as a grouping key for the ProgAbs
elements, and then use Muenchian grouping. The other is to use head-tail
recursion on the sequence of siblings: so you call a template passing the
full list of siblings as a parameter, this then calls itself to process the
elements after the first if there's another ProgAbs, or returns if there
isn't.

Michael Kay
http://www.saxonica.com/

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.