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

RE: Confounded by grand-parents

Subject: RE: Confounded by grand-parents
From: Rick Taylor <taylor@xxxxxxxx>
Date: Wed, 23 Apr 2003 15:30:44 -0600
RE:  Confounded by grand-parents
Jon,

Unless I'm missing something, the sample pattern that Marty sent you appears to satisfy your requirements --except for an oversight that there exists a registers element between block and register. So it should be "blocks/block[1]/registers/register[1]".

If for some reason you need to match on 'register' and then check 'backwards' to see if the grandparent is the first 'block' element then this is one way to do it

<xsl:variable name="block1" select="//block[1]"/>

<xsl:template match="register[1]">
 <xsl:if test="generate-id(ancestor::block)=generate-id($block1)">
  <firstRegister>
   <xsl:value-of select="."/>
  </firstRegister>
 </xsl:if>
</xsl:template>

-rick

At 01:31 PM 4/23/03 -0700, you wrote:
Unfortunately, I need the template to match on the register and then test to see if the grandparent is the 1st element of its type.

Thanks

Jon

-----Original Message-----
From: Marty McKeever [mailto:marty.mckeever@xxxxxxxxxx]
Sent: Wednesday, April 23, 2003 12:41 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  Confounded by grand-parents


you might try


xsl:template match="blocks/block[1]/register[1]"

or if you need the xsl:choose sytntax, i'm sure someone will post a fine
example of the preceding-sibling::axis.

cheers


I~I~


> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Jon Steeves
> Sent: Wednesday, April 23, 2003 3:11 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Confounded by grand-parents
>
>
> Hello:
>       Here's the xml I'm working with:
>
>                       <blocks>
>                               <block>
>                                       <registers>
>                                         <register/>
>                                         <register/>
>                                       </registers>
>                               </block>
>                               <block>
>                                       <registers>
>                                         <register/>
>                                         <register/>
>                                       </registers>
>                               </block>
>                       </blocks>
>
> I want to process a register node if:
>       1. It is the first register node and
>       2. Its block grandparent is the first block node.
>
> Here's what I've come up with so far, but it isn't working.
>
> <xsl:template match="register">
>  <xsl:choose>
>   <xsl:when test="parent::*[position()=1]/parent::* and position()=1">
>
> Can someone clear up my thinking here?
>
>
> Cheers
>
>
> Jon Steeves
> Technical Communications
> (604) 415-6053 ext. 2139
> jon_steeves@xxxxxxxxxxxxxx
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>


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


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

Rick Taylor XML Developer PPDM Association


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



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-2013 All Rights Reserved.