RE: [xsl] xsl:number problem

Subject: RE: [xsl] xsl:number problem
From: "Yan, Charlene" <Charlene.Yan@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 20 Jun 2003 11:47:46 -0400
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@xxxxxxxxxxxxxxxx]
Sent: Wednesday, June 18, 2003 5:29 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
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


Current Thread