[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Comparing Variables


Subject: Re: [xsl] Comparing Variables
From: me@xxxxxxxxxxxx
Date: Thu, 01 May 2003 12:08:19 -0700 (PDT)

> Hi I am still new to this technology so bare with my
> problem. 
  
> I have a default value from a xml document for an
> employee as <employee>John
> Doe</employee>.
> In the XSL stylesheet I have a node set creating a
drop
> down list as
> described below
>  
> <select name="employee">             
>    <xsl:for-each select="$v_employee/name">
>         <option value="{.}"><xsl:value-of
> select="."/></option>
>        </xsl:for-each>     
>   </select>
>  
> My problem is this. I want to be able to compare as
> each list item is being
> created the value of the current item to the default
> value in employee, so
> that I may make that value on the list the Selected
> Item. I have tried the
> attempt below. However it seems that the value of the
> default value
> (employee) is always null.

Just so you know (you say you are new) - when using a
value-of and the thing you are trying to access doesn't
exists, it will return null as opposed to an error.

> ***<xsl:value-of select="employee"/> --- Value is John
> Doe ***********
at this point you could set
<xsl:variable name="sKeeper" select="employee" />
  
> <select name="employee">             
>    <xsl:for-each select="$v_employer/employer/option">
> 
> ***<xsl:value-of select="employee"/> --- Value is
empty
When you use the for-each you are moved into that part
of the tree. Meaning everything is relative to the point
$v_employer/employer/option. Is there an employee
element like $v_employer/employer/option/employee? if
not that is why it is null.

>  *********** 
if you use that variable comment above you could do
something like

<xsl:if test="string($sKeeper) = string(.)">
etc etc

>     <xsl:if test="employee= '{.}">
>      <option value="{.}"
> selected="selected"><xsl:value-of
> select="./description"/></option>
>     </xsl:if>    
>     <xsl:if test="not(employee= '{.}')">
>      <option value="{.}" "><xsl:value-of
> select="./description"/></option>
>     </xsl:if>        
>    </xsl:for-each>     
> </select>
>  
> I guess my question is can this be done or how can I
> bring a value from the
> main template in to be compared to the item on the
list
> as it is iterating
> through it.

I think you were just missing the fact that your
context moves.

Cheers,
Rob

    _/  _/_/    _/_/_/
   _/_/   _/ _/     _/
  _/               _/
 _/             _/
_/          _/_/_/_/
http://treebeard.sourceforge.net
http://ashpool.sourceforge.net

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords