xsl-list
[Top] [All Lists]

Using the count function to count the previous siblings in XLST 1.0

2005-05-03 03:38:41
Hi All,
       After further investigation I have I can use the following;

<xsl:when test = "position() = last()">
<xsl:value-of select="count(preceding-sibling::employee) + 1"/>

But there is another problem, I wish to sort by two elements 'OFFICE' and
'ENAME'. If I comment out the two xsl:sort lines, the count is correct
(shown below). But if uncomment them, the count is incorrect. Why is is this
happening?

Thanks Marco Mastrocinque     

<xsl:for-each select="company/division">
  <xsl:for-each select="employees/employee">            
        <!--<xsl:sort select="OFFICE"/>--> **Problem**
        <!--<xsl:sort select="ENAME"/>-->  **Problem** 

        

        

-----Original Message-----
From: Marco Mastrocinque [mailto:mmfive(_at_)netspace(_dot_)net(_dot_)au] 
Sent: Tuesday, 3 May 2005 7:57 PM
To: (xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com)
Subject: Using the count function to count the previous siblings in XLST 1.0

Hi All,
       I have the following snippet of code. 

  <xsl:for-each select="company/division">
    <xsl:for-each select="employees/employee">          
        <xsl:sort select="OFFICE"/>
        <xsl:sort select="ENAME"/>
          <tr>                          
            <td>
                <xsl:choose>
                   <xsl:when test="position() != last()">
                        <xsl:value-of select="concat(' ', @EID, ', ', ENAME,
', ',OFFICE)"/>
                   </xsl:when>
                   <xsl:when test = "position() = last()">      
                        <xsl:value-of select="concat(' ', @EID, ', ', ENAME,
', ',OFFICE)"/>
<xsl:text>&#xa;&#xa;&#xa;&#xa;Count is</xsl:text>
                        <xsl:value-of select="count(employees/employee)"/>
</xsl:when>

            </td>
</tr>
</xsl:for-each>    
</xsl:for-each>

This works by displaying a whole series of data in a single column in a HTML
table. At the end of each employees/employee, with the last value in this
previously mentioned element output, I wan't to display the count of 
'count(employees/employee)'. It displays zero, because the system has
already cycled all the way trough them. I want to all the previous-siblings
plus the last one. Can it be done? I want the output to be,

Element 1 (First group)

Element 2

Element 3
Element 4 Count is 4

Element 1 (Second group)
Element 2
Element 3
Element 4
Element 5 Count is 5
Etc...

All this a SINGLE column of a HTML table.

Thanks Marco Mastrocinque

                                                                        
                                                


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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