xsl-list
[Top] [All Lists]

Re: Passing arrays into XSL

2006-02-25 17:53:13
Hi Jern,

Thanks for your help.

But my need is bit different, we have to match with
the strings from the variable or the parameter from a
servlet response. 

  So i need to match those strings available in the
'param' with actual xml file. The xml file nodes may
be more than blue,red colors.  So the XSL display
should be depends on the values available in the
param. The parameter string may be with a delimiter
','(red, blue) or '' (red blue). 

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:param name="arrayString">
   blue,red
</xsl:param>

<xsl:template match="colors">

<xsl:if test="contains(color,$arrayString)">
 <xsl:text> do something</xsl:text>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

Please let me is the'r anything left behind.

Thanks,
Deepak

--- Joern Nettingsmeier
<nettings(_at_)folkwang-hochschule(_dot_)de> wrote:

hi deepak!

i missed the beginning of this thread (new to this
list), but i'll try 
an answer:

Deepak wrote:
I am bit new to XSL processing.  If we can't pass
the
arrays into XSL, then i hope that we can pass
array
string as a variable.

Say i have an XML file

<colors>
<color>color[1]<color>
<color>color[2]<color>
<color>color[3]<color>
</colors>

are those square brackets just meant as an example,
or are you thinking 
about the array syntax of other languages?

xsl does not have the notion of indexed arrays. the
square brackets you 
will see in xpath statements are *predicates* that
will select from a 
node-set.

what you could do is this:

<colors>
   <color>blue</color>
   <color>red</color>
   <color>an obnoxious shade of pink</color>
</color>

<xsl:template match="colors/color[2]">
   <xsl:value-of select="."/>
</xsl:template>

this will produce "red" as an output, since it's the
second <color> element.

if you want to check whether "blue" is in the list
of colors, you can do

<xsl:template match="colors/color[text() = 'blue']">
   <xsl:text>Your color list contains
"blue".</xsl:text>
</xsl:template>


generally, square brackets can mean two things:

(1) from a set of nodes, select those for which the
expression in the 
square brackets is true;
(2) if the expression in square brackets produces
not a boolean but a 
number n, return the nth node from the set.


hope that helps,

jörn



-- 
jörn nettingsmeier

home://germany/45128 essen/lortzingstr. 11/
http://spunk.dnsalias.org
phone://+49/201/491621

if you are a free (as in "free speech") software
developer
and you happen to be travelling near my home, drop
me a line
and come round for a free (as in "free beer") beer.
:-D


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




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.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>
--~--