xsl-list
[Top] [All Lists]

Re: Apply Template based on position or count

2004-02-05 21:58:58
I think there might also be a <tr/> typo.
But now let me ask, given the sample XML:

<AAA>
  <BBB prop="1"></BBB>
  <BBB prop="2"></BBB>
  <BBB prop="3"></BBB>
  <BBB prop="4"></BBB>
  <BBB prop="5"></BBB>
</AAA>

Within a for-each... if I have the following for each loop and if construct,
and for sake of discussion we are currently at:
BBB prop 3:

  <xsl:for-each select="//BBB">
        <xsl:if test="position() mod 2 = 1">

                [[[ HOW TO IMPLICITLY REFERENCE "BBB prop 4" ]]]

        </xsl:if>
  </xsl:for-each>


This would clean up your suggestion (i think - if this works).

Karl



----- Original Message -----
From: "Kenny Akridge" <kakridge(_at_)bellsouth(_dot_)net>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Thursday, February 05, 2004 8:21 PM
Subject: RE: [xsl] Apply Template based on position or count


Sorry, missed a closing <if> there.

-----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 
Kenny
Akridge
Sent: Thursday, February 05, 2004 10:03 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Apply Template based on position or count

I'm not exactly certain what you are trying to do, but if you want two
columns, you'll need to do something like this:

 <table width="200" border="1">
  <xsl:for-each select="//z:row">
        <xsl:if test="position() mod 2 = 1">
     <tr/>
         <td valign="top"><xsl:apply-templates select="."
mode="session_info"/></td>
            <td valign="top"><xsl:apply-templates select="."
mode="session_info"/></td>
        </xsl:if>
        <xsl:if test="position() mod 2 = 0">

         <td valign="top"><xsl:apply-templates select="."
mode="session_info"/></td>
            <td valign="top"><xsl:apply-templates select="."
mode="session_info"/></td>
<tr/>
        </xsl:for-each>

    </table>

Notic:  the second select is "."  How do i get the next z:row?

The next z:row will be given to you in the for-each loop.
Maybe some sample xml and a simple drawing will help.

Karl


----- Original Message -----
From: "Karl J. Stubsjoen" <karl(_at_)azprogolf(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Thursday, February 05, 2004 6:25 PM
Subject: [xsl] Apply Template based on position or count


Hi there,

I have a node fragment with (lets say) 20 items in it.  I would like
to
apply a template rule which matches the first 10 nodes, and then later
the
2nd ten.  Ultimately I am trying to create two columns in my html
output.
Now, lets say there are 25 items, so the first set would contain 13
items
and the 2nd set 12 items - but somehow in XSLT no that we need to
match 13
rows on the left so add 1 more row.

So, can you apply-templates and specify some sort of [1-10] match?

Karl



 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




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