xsl-list
[Top] [All Lists]

Re: [xsl] Put Xpath in variable

2006-08-28 08:21:53
(please, don't use "reply to all", that way, I get the message twice, once from my normal inbox, and once from the xsl list. Just reply to the xsl list, that is enough)

Hi Matteo,

It would help if you would simply put the XML in the mail. You use round brackets (parentheses), but you better use angle brackets. Re-writing your post, it looks like this:

<xsl:for-each select="field[contains(@id, 'containerWidth')]">
<xsl:variable name="var1" select="@value" />
</xsl:for-each>

I think you have just a little scope-confusion here. The variable only exists 
in the context of the for-each and it will contain the value for @value of each 
iteration (instance) of the matching select in your for-each.

To resolve this, to get only the first, you can do this:
<xsl:variable name="var1" select="field[contains(@id, 
'containerWidth')][1]/@value" />

And place it somewhere outside the scope of your for-each (well, you may put it 
inside, but that is a waste of system resources because it needs to be 
calculated again each time and you will have to adjust the xpath a bit).

"If i want to make one variable for each values"
Not sure what you mean here. You cannot make one variable for each value, 
because you cannot know beforehand how many values there are. This looks like 
you want something that is called an array in normal programming languages. 
Such thing does not exist in XSLT because you cannot change the name of the 
variable. This is a FAQ. There are several ways around this, but most of the 
times, a different approach to your problem will help the best.

HtH,

Cheers,
Abel Braaksma
http://abelleba.metacarpus.com




m(_dot_)core(_at_)aimconsulting(_dot_)it wrote:

Thx a lot Abel...
I have one last question
if i make something like this:

(xsl:for-each select="field[contains(@id, 'containerWidth')]")
(xsl:variable name="var1" select="@value" /) (/xsl:for-each)

in var1 i put different values one for each instance of containerWidth in the 
xml tree, infact if i make:

(xsl:value-of select="$var1" /)

it print out this:
45
14
2
6

If i want to make one variable for each values or make a variable that contains 
only the first value how can i do?

in any case thx all guys this list is very usefull to me

bye Matteo



--~------------------------------------------------------------------
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>
--~--





--~------------------------------------------------------------------
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>