[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Complex XPath Help
You want: //tab[@page=$param]/preceding::tab[1]/@page //tab[@page=$param]/following::tab[1]/@page Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Peet, Mike > Sent: 25 April 2002 20:49 > To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx' > Subject: Complex XPath Help > > > Okay, it's probably not *that* complicated, but I'm having > some trouble with > this one. I think I'm missing something fundamental. Sorry > for the long > message. For those of you that have the patience to look at > this, your help > is greatly appreciated. > > <xml> > <tab-groups> > <tab-group id="100" name="group1"> > <tabs> > <tab desc="Page 1" page="page1.asp"/> > <tab desc="Page 2" page="page2.asp"/> > </tabs> > </tab-group> > <tab-group id="104" name="group2"> > <tabs> > <tab desc="Page x" page="pagex.asp"/> > <tab desc="Page y" page="pagey.asp"/> > </tabs> > <tab-group id="145" name="group3"> > <tabs> > <tab desc="Page A" page="pageA.asp"/> > <tab desc="Page B" page="pageB.asp"/> > </tabs> > </tab-group> > <tab-group id="167" name="group3"> > <tabs> > <tab desc="Page A" page="pageA.asp"/> > <tab desc="Page B" page="pageB.asp"/> > </tabs> > </tab-group> > </tab-group> > </tab-groups> > </xml> > > With the above XML document, if I pass a "page" into the XSLT as a > parameter, and I want to know what the previous and next > pages are, how > would that be done? Note that the tab-groups may be nested. > > The desired behaviour is that the previous page would be > simply the page > attribute of the preceding <tab> element (in document order, > regardless of > group), and next would be the page attribute of the following > <tab> element > (in document order, regardless of group). The special cases > of first and > last pages can return nothing. > > One way that I can think of is an intermediate transform to > get a document > containing just the <tab> elements with no nesting, and using the > preceding-sibling and following-sibling axes off the current > tab, like this: > > <xml> > <tabs> > <tab group-id="100" desc="Page 1" page="page1.asp"/> > <tab group-id="100" desc="Page 2" page="page2.asp"/> > <tab group-id="104" desc="Page x" page="pagex.asp"/> > <tab group-id="104" desc="Page y" page="pagey.asp"/> > <tab group-id="145" desc="Page A" page="pageA.asp"/> > <tab group-id="145" desc="Page B" page="pageB.asp"/> > <tab group-id="167" desc="Page A" page="pageA.asp"/> > <tab group-id="167" desc="Page B" page="pageB.asp"/> > </tabs> > </xml> > > But this seems to defeat the purpose of a having a nice structured XML > document in the first place. I would like to be able to > accomplish this > without another transform, but I cannot seem to come up with > the correct > XPath.. :( > > Well, back to the XSL; thanks in advance! > > Michael Peet > Software Engineer > Choice One Communications > 100 Chestnut Street, Suite 600 > Rochester, NY 14604 > mpeet@xxxxxxxxxxxxxxxx > (585) 530-2773 > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|