xsl-list
[Top] [All Lists]

RE: xsl:number problem

2003-06-20 08:47:46
Hello,

I'm stuck with this again.:)  
2.  I want to do a number like <xsl:number level="any" 
count="productId"/>.  However, I only want to get the xsl:number for 
productId that has publisher of "NETg" or "Wave".

For this, you need to change the XPath pattern that is used in the @count 
attribute of xsl:number. An XPath resource could help you teach yourself to 
formulate that productId[publisher='NETg' or publisher='Wave'] would be a 
start (but that there are also other, more sophisticated ways).

After I changed to <xsl:number level="any" count="productId[publisher='NETg' or 
publisher='Wave']"/>  or 
<xsl:number level="any" count="//productId[publisher='NETg' or 
publisher='Wave']"/>, only productId 5 is displayed on my Excel spreadsheet.  5 
is the last product in the xml tree.  Why is that?  Please see my xml and 
stylesheet below:

=========================================================
<?xml version="1.0"?>
                <solution>
        <product>
                <productId>1</productId>
                <publisher>NETg</publisher>
        </product>
        <product>
                <productId>2</productId>
                <publisher>Wave</publisher>
        </product>
        <program>
                <product>
                <productId>3</productId>
                        <publisher>Course</publisher>
                </product>
                <product>
                <productId>4</productId>
                        <publisher>Wave</publisher>
                </product>
        </program>
        <product>
                <productId>5</productId>
                <publisher>NETg</publisher>
        </product>
</solution>

===============================================================
<?xml version="1.0"?>

<!-- CVS $Id: page2xls.xsl,v 1.2 2003/05/07 04:57:13 vgritsenko Exp $ -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                              xmlns:sql="http://apache.org/cocoon/SQL/2.0";
                             xmlns:gmr="http://www.gnome.org/gnumeric/v7"; >

  <xsl:param name="view-source"/>

  <xsl:template match="solution">
   <gmr:Workbook xmlns:gmr="http://www.gnome.org/gnumeric/v7";>
   
     <gmr:Sheets>
         <gmr:Sheet DisplayFormulas="false" HideZero="false" HideGrid="false" 
HideColHeader="false" HideRowHeader="false" DisplayOutlines="true" 
OutlineSymbolsBelow="true" OutlineSymbolsRight="true">
                 <gmr:Name><xsl:value-of select="title"/></gmr:Name>
                 <gmr:MaxCol>2</gmr:MaxCol>
                 <gmr:Cols DefaultSizePts="48">
                     <gmr:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" 
Count="7"/>
                 </gmr:Cols>
                 <gmr:Rows DefaultSizePts="12.8">
                        <gmr:RowInfo No="0" Unit="12.8" MarginA="0" MarginB="0" 
Count="9"/>
                        <gmr:RowInfo No="10" Unit="12.8" MarginA="1" 
MarginB="0" Count="24"/>
                 </gmr:Rows>
                 <gmr:Cells>
                        <xsl:apply-templates/>
                 </gmr:Cells>
        </gmr:Sheet>
     </gmr:Sheets>
    </gmr:Workbook>
  </xsl:template>

  <xsl:template match="content">
      <xsl:apply-templates/>
  </xsl:template>

<! HERE IS WHERE I DO THE LOOP OF THE PRODUCTID -->

  <xsl:template match="productId">
     <gmr:Cell Col="0" ValueType="60">
      <xsl:variable name="rownumber"><xsl:number level="any" 
count="//productId[publisher='Wave' or publisher='NETg']"/></xsl:variable>
      <xsl:attribute name="Row">
         <xsl:value-of select="$rownumber"/>
      </xsl:attribute>
       <gmr:Content>
                <xsl:apply-templates/> 
        </gmr:Content>
     </gmr:Cell>
  </xsl:template>
</xsl:stylesheet>

Thanks!

Charlene
-----Original Message-----
From: Wendell Piez [mailto:wapiez(_at_)mulberrytech(_dot_)com]
Sent: Wednesday, June 18, 2003 5:29 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] xsl:number problem


Charlene,

At 04:19 PM 6/18/2003, you wrote:

2.  I want to do a number like <xsl:number level="any" 
count="productId"/>.  However, I only want to get the xsl:number for 
productId that has publisher of "NETg" or "Wave".

For this, you need to change the XPath pattern that is used in the @count 
attribute of xsl:number. An XPath resource could help you teach yourself to 
formulate that productId[publisher='NETg' or publisher='Wave'] would be a 
start (but that there are also other, more sophisticated ways).

3.  Same question is for count(//productId).  How can I do a count of 
productId that has publisher of "NETg" or "Wave"?

Same: count(//productId[publisher='NETg']) and so forth.

Learn XPath, you can't write XSLT without it.

Cheers,
Wendell

___&&__&_&___&_&__&&&__&_&__&__&&____&&_&___&__&_&&_____&__&__&&_____&_&&_
     "Thus I make my own use of the telegraph, without consulting
      the directors, like the sparrows, which I perceive use it
      extensively for a perch." -- Thoreau


 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>