To test whether the grandparent block is the first block child of its parent, do
test="not(../parent::block/preceding-sibling::block)"
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Jon Steeves
Sent: 23 April 2003 21:32
To: 'xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: RE: [xsl] Confounded by grand-parents
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(_dot_)mckeever(_at_)goingv(_dot_)com]
Sent: Wednesday, April 23, 2003 12:41 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] 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(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of 
Jon Steeves
Sent: Wednesday, April 23, 2003 3:11 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] 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(_at_)pmc-sierra(_dot_)com
 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
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list