This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Numbering
Hi Jenny
Here is the real case:
Part of the template match="root"
<select size="6" name="available">
<xsl:apply-templates select="*|@*|text()"/>
</select>
The template I´m calling:
<xsl:template match="@*|text()">
<xsl:if test="normalize-space(.)!=''">
<option value="{position()}">
<xsl:for-each select="ancestor::*">/<xsl:value-of
select="local-name(.)"/></xsl:for-each>
</option>
</xsl:variable>
</xsl:if>
</xsl:template>
In this case, I get an html with:
<select name="second"><option value="1">/root/url</option><option
value="1">/root/tags/a</option><option
value="1">/root/tags/b</option><option
value="1">/root/tags/c</option><option
value="1">/root/tags/e</option><option
value="1">/root/tags/f</option><option
value="1">/root/tags/g</option><option
value="1">/root/tags/i</option><option
value="1">/root/tags/j</option></select>
So, I could not use position.
I hope you could help me.
Regards
jeni@jenitennison.com wrote:
> Hi Kobily,
>
>
>>This should be only for the elements that have content (tgis have
>>been solved), my problem is to give the number of each elem. I can´t
>>increase a variable. I´m using:
>>
>><xsl:variable name="values">0</xsl:variable>
>><xsl:for-each select="elem">
>> <option><xsl:attribute name="value"><xsl:value-of select="$values +
>>1"/></xsl:attribute><xsl:value-of select="elem"/></option>
>></xsl:for-each>
>>
>>But the variable "values" is always 1.
>>
>
> Variables are strange in XSLT, in that they don't vary. But XSLT gives
> you other ways of doing what you want to do. In your case, you can use
> the position() function to get a counter telling you which elem you're
> currently on. So you can do:
>
> <xsl:for-each select="elem">
> <option>
> <xsl:attribute name="value">
> <xsl:value-of select="position()" />
> </xsl:attribute>
> <xsl:value-of select="." />
> </option>
> </xsl:for-each>
>
> Or, more simply using an attribute value template:
>
> <xsl:for-each select="elem">
> <option value="{position()}">
> <xsl:value-of select="." />
> </option>
> </xsl:for-each>
>
> [I've assumed that the content of the option element should be the
> value of the current elem, not the value of the elem element child of
> the current elem element.]
>
> I hope that helps,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list