xsl-list
[Top] [All Lists]

Re: [xsl] update value of variable in for-each loop

2014-04-08 15:49:18
When I run this code the output of the variable foo is never 1 or 0 as I expect 
but either 0011 or 11 or 0001

brg
--------------------------------------------
henry human <henry_human(_at_)yahoo(_dot_)de> schrieb am Di, 8.4.2014:

 Betreff: Re: [xsl] update  value of variable in for-each loop
 An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
 Datum: Dienstag, 8. April, 2014 22:18 Uhr
 
 sorry Michael, David
 I was little bustling!
  hope
 this below is more clear now.
 The varable
 value should be updated 
 
 
 
  
    <xsl:variable name="foo"/> 
       
  <xsl:for-each
 select=”partiotion/files/file[@name=’xx’ or
 name=’xy’ or name=’asd’ or  ……….. ”>
        <xsl:variable
 name="foo">
            
          <xsl:for-each
 select="data">
          
                <xsl:choose>
                          
    <xsl:when
 test="contains(elements/elementA '1234) or
 contains(elements/package/id '55) or
 contains(elements/category/id, '67)" or
 contains(………….">
 
                              
    <xsl:value-of select="1"/>
                          
    </xsl:when>
        
                  
    <xsl:otherwise>
      
                        
    <xsl:value-of select="0"/>
                          
    </xsl:otherwise>
    
                  
    </xsl:choose>
      
                </xsl:for-each>
                
 </xsl:variable>
            
     
 
 
  
                    
    <xsl:choose>
        
                      <xsl:when
 test="$foo = 1">
 
                                
 //doSomething
                    
          </xsl:when>
  
                        
    <xsl:otherwise>
      
                        
    //doNothing
            
                  </xsl:otherwise>
                      
    </xsl:choose>
  
    </xsl:for-each 
 --------------------------------------------
 Michael Kay <mike(_at_)saxonica(_dot_)com>
 schrieb am Di, 8.4.2014:
 
 
 Betreff: Re: [xsl] update  value of variable in for-each
 loop
  An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
  Datum: Dienstag, 8. April, 2014 21:56 Uhr
  
  What are you actually
  trying to achieve? If you simply want to test
 whether one of
  the elementA elements
 contains "1234", you can
  write
  
  <xsl:if
 
 test="elements/elementA[contains(.,
 
 '1234')]">
     ...
  </xsl:if>
  
  But I can't tell if that's what you
 are
  trying to do because you don't say.
 You've been
  using this list long enough
 to know that most of us have
  difficulty
 reverse-engineering requirements from non-working
  code.
  
 
 Michael Kay
  Saxonica
  
  
  On 8
  Apr
 2014, at 20:13, henry human <henry_human(_at_)yahoo(_dot_)de>
  wrote:
  
  >
 Hi
  > I have a for-each loop 
  > inside for-each I try to test a
  variable:
  > //if
 statement
  > <xsl:if test="$foo
 =
  1">
  > //do
 nothing
  > 
  > 
  > 
  > The varibale
  definition:
  >    
 <xsl:variable
 
 name="foo"/>
  >    
    
  <xsl:variable
 name="foo">
  >        
            
  <xsl:for-each
 select="data">
  >    
                    
 
 <xsl:choose>
  >        
    
                 
 <xsl:when
 
 test="contains(elements/elementA
 
 '1234)">
  > 
 
                       
          <xsl:value-of
 select="1"/>
  >    
                    
     
 </xsl:when>
  >        
                     
 <xsl:otherwise>
  >        
                
         
 <xsl:value-of select="0"/>
 
                       
      </xsl:otherwise>
 
   
                 
     </xsl:choose>
  >    
                
 
 </xsl:for-each>
  >        
          </xsl:variable>
  >
             
     
  >    
     
         
  >        
          
  >
 Unfortunatelly the value
  of the varable foo
 is either 001 , 011,00011 and so one and
 
 the if statement works never correct  !
 
I even defined the varable as a xs:integer
  type or as below , but ever the value is never
 a 1  or 
  0
  > 
  >
  <xsl:variable
 name="foo" 
 
 select='1'"/>
  >
    
      <xsl:variable
 name="foo">
  >        
            
  <xsl:for-each
 select="data">
  >    
                    
 
 <xsl:choose>
  >        
    
                 
 <xsl:when
 
 test="contains(elements/elementA,
 
 '1234)">
  > 
 
                       
          <xsl:value-of
  select="'1'"/>
  >
             
                
 
 </xsl:when>
  >        
    
                 
 <xsl:otherwise>
  >        
                
         
 <xsl:value-of
 
 select="'0'"/>
  >
                         
    
  </xsl:otherwise>
  >        
     
             </xsl:choose>
 
                   
 
 </xsl:for-each>
  >        
          </xsl:variable>
  >
             
     
  > Brg
  >
 Henry
  > 
  >
 
 --~------------------------------------------------------------------
  > 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>
  --~--
 
 
 --~------------------------------------------------------------------
 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>
--~--