RE: [xsl] Problem with position( ) function

Subject: RE: [xsl] Problem with position( ) function
From: "Jaime A Stuardo Bahamondes" <jstuardo@xxxxxxxxxxx>
Date: Mon, 1 Dec 2003 10:29:29 -0400
Thanks.. but the problem I have is that condition "position() &lt; last()" doesn't work because position() gets the position of the last node in the XML, and not of the last node with the same agr_id. I need that the last comma not to be added to the string. To solve it I have thought about adding a 0 after the call to the template and it worked.

Thanks anyway

Jaime

> -----Mensaje original-----
> De: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]En nombre de Manolis
> Mavrikis
> Enviado el: Jueves, 27 de Noviembre de 2003 23:29
> Para: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Asunto: Re: [xsl] Problem with position( ) function
> 
> 
> I am not sure what you are trying to do as your JavaScript 
> and what you 
> are showing the xslt to generate seems different but I assume 
> you want to 
> haver these ACT_DES_COR data there but then your foramt seems very 
> complicated. 
> 
> Anyway this is not the issue and maybe you don't want/can't 
> change it but 
> still I think you over-complicated the matter a lot. Unless 
> you are trying 
> to do as well with the template <xsl:template 
> match="actividades/ROWSET/ROW">  then I think that (assuming 
> that this is 
> waht you want to do)  you just have to call a template when 
> you want to 
> construct the array:
> 
> Array(<xsl:call-templates 
> select="actividades-indexing"><xsl:with-param 
> name="agr_id" select="AGR_ID" /></xsl:call-template>)
> 
> 
> <xsl:template name="actividades-indexing">
>   <xsl:param name="agr_id" />
>   <xsl:for-each select="/yourroot/actividates/ROWSET/ROW[ACT_AGR_ID = 
> $agr_id]]]/"/>
> 	'<xsl:value-of select="position()"/>|<xsl:value-of 
> select="ACT_DES_COR" />'
>            <xsl:if test = "position() &lt; last()">,</xsl:if>
>   </xsl:fot-each>
> </xsl:template>
> 
> I am sorry I cannot test it at the moment but it seems 
> consistent with 
> what you want to do. 
> 
> Manolis
> 
> p.s. btw I don't know what you want to do with these data assigned in 
> the Arrays but in a similiar case I used JavaScript 
> 'hashmaps' to assign things 
> into and then when I needed to call them i just refered to them with 
> their id
> 
> 
> On Thu, 27 Nov 2003, Jaime A Stuardo Bahamondes wrote:
> 
>        Hi all..
>        
>        I have this piece of XML:
>        
>        <actividades>
>          <ROWSET>
>            <ROW id="1">
>              <ACT_ID>6</ACT_ID>
>              <ACT_FEC_ING>27-11-2003 09:43:32</ACT_FEC_ING>
>              <ACT_DES_LAR>Finanzas, Impuestos y Política 
> Monetaria</ACT_DES_LAR>
>              <ACT_DES_COR>Finanzas, Impuestos y Política 
> Monetaria</ACT_DES_COR>
>              <ACT_EST>v</ACT_EST>
>              <ACT_AGR_ID>1</ACT_AGR_ID>
>            </ROW>
>            <ROW id="2">
>              <ACT_ID>1</ACT_ID>
>              <ACT_FEC_ING>27-11-2003 09:43:31</ACT_FEC_ING>
>              <ACT_DES_LAR>Gobierno en General, 
> Municipalidades</ACT_DES_LAR>
>              <ACT_DES_COR>Gobierno en General, 
> Municipalidades</ACT_DES_COR>
>              <ACT_EST>v</ACT_EST>
>              <ACT_AGR_ID>1</ACT_AGR_ID>
>            </ROW>
>            -......---
>        </actividades>
>        <agrupaciones>
>          <ROWSET>
>            <ROW id="1">
>              <AGR_ID>1</AGR_ID>
>              <AGR_FEC_ING>11-11-2003</AGR_FEC_ING>
>              <AGR_FEC_MOD>14-11-2003 11:22:04</AGR_FEC_MOD>
>              <AGR_DES_LAR>Administración Publica</AGR_DES_LAR>
>              <AGR_DES_COR>Administración Publica</AGR_DES_COR>
>              <AGR_EST>v</AGR_EST>
>            </ROW>
>            <ROW id="2">
>              <AGR_ID>2</AGR_ID>
>              <AGR_FEC_ING>18-11-2003 11:34:08</AGR_FEC_ING>
>              <AGR_DES_LAR>Agricultura</AGR_DES_LAR>
>              <AGR_DES_COR>Agricultura</AGR_DES_COR>
>              <AGR_EST>v</AGR_EST>
>            </ROW>
>        </agrupaciones>
>        
>        
>        I'm programming an XSL that generates a JavaScript this way:
>        
>        var actividades = new Array(2);	// 2 "agrupaciones"
>        actividades[0] = new Array(6, 1);	// 6 and 1 are 
> "actividades" corresponding to "agr_id" = 1
>        actividades[1] = new Array(7,9,15);	// 7, 9 and 15 
> are "actividades" corresponding to "agr_id" = 2 (not shown in 
> XML above)
>        and so on.
>        
>        I programmed this XSL:
>        
>        <xsl:template match="agrupaciones/ROWSET/ROW">
>          actividades[<xsl:value-of select="position()-1"/>] = 
> new Array(<xsl:apply-templates 
> select="../../../actividades/ROWSET/ROW"><xsl:with-param 
> name="agr_id"><xsl:value-of select="AGR_ID" 
> /></xsl:with-param></xsl:apply-templates>)
>        </xsl:template>
>                
>        <xsl:template match="actividades/ROWSET/ROW">
>          <xsl:param name="agr_id" />
>          <xsl:if test="ACT_AGR_ID = $agr_id">'<xsl:value-of 
> select="position()" />|<xsl:value-of select="ACT_DES_COR" 
> />'<xsl:if test = "position() &lt; last() ">,</xsl:if></xsl:if>
>        
>        </xsl:template>
>        
>        The problem I have is that the following is generated 
> by those templates:
>        
>        actividades[0] = new Array(6,1,);		// 
> realize about the last "comma"
>        actividades[1] = new Array(7,9,15,);
>        
>        To avoid that, I placed the condition position() &lt; 
> last(), but I realized that position( ) isn't resetted by 
> each iteration of the template. Any help on this?
>        
>        And other question. I have placed all the xsl 
> instructions on the same line because if I write the xsl more 
> readable, empty lines are inserted in the generated 
> JavaScript. Is it possible to solve it?
>        
>        Thanks in advance
>        Jaime
>        
>         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


Current Thread