xsl-list
[Top] [All Lists]

RE: Confounded by grand-parents

2003-04-23 15:33:08
Thanks Rick.  

I do need to match on "register". So I borrowed from your method and got 
something that works.  Here's the code I ended up using:

<xsl:variable name="block1" select="//block[1]"/>
 <xsl:template match="register">
  <xsl:choose>
   <!-- if it's the first register in the first block, no page break -->
   <xsl:when test="generate-id(ancestor::block)=generate-id($block1) and  
position()=1">       
     <fo:block id="{generate-id(.)}" font-weight="bold"
               font-family="Helvetica" font-size="11pt">
               Register <xsl:value-of select="reg_address"/>: 
               <xsl:apply-templates select="reg_name"/>
     </fo:block>
    </xsl:when>

<etc/>

Thanks to all for the help.

Jon
-----Original Message-----
From: Rick Taylor [mailto:taylor(_at_)ppdm(_dot_)org]
Sent: Wednesday, April 23, 2003 2:31 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] 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(_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

Rick Taylor
XML Developer
PPDM Association


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

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



<Prev in Thread] Current Thread [Next in Thread>