FLWOR

Programmeringsspråket XQuery definierar FLWOR (uttalas 'blomma') som ett uttryck som stöder iteration och bindning av variabler till mellanresultat. FLWOR är en akronym: FOR , LET , WHERE, ORDER BY, RETURN. FLWOR är löst analog med SQL: s SELECT-FROM-WHERE och kan användas för att tillhandahålla kopplingsliknande funktionalitet till XML -dokument.

  • för skapar en sekvens av noder
  • let binder en sekvens till en variabel
  • där filtrerar noderna på ett booleskt uttryck
  • sortera noderna
  • retur utvärderas en gång för varje nod

Exempel

      
        
      
     
   
     
         
           
           
        
      för  $  d  i  doc  (  "depts.xml"  )//  deptno  let  $  e  :=  doc  (  "emps.xml"  )//  anställd  [  deptno  =  $  d  ]  där  count  (  $  e  )  >=  10  order by  avg  (  $  e  /  lön  )  fallande  avkastning  <big-dept>  {  $  d  ,  <headcount>  {  count  (  $  e  )}  </headcount>  ,  <avgsal>  {  avg  (  $  e  /  lön  )}  </avgsal>  }  </ storavdelning> 

Första kolumnen i XQuery-begäran visar för , let , where , ordning efter och returnera nyckelorden i FLWOR-paradigmet. På vanlig engelska skulle detta kunna läsas som "Hämta alla avdelningar som har mer än tio anställda, beställ dessa avdelningar genom att minska medellönen, och returnera en rapport över avdelningsnummer, antal anställda och genomsnittlig lön i varje stor avdelning" . Resultatet kan se ut så här:


    
    
    


    
    
    


    
    
    
 <big-dept>  <deptno>  17  </deptno>  <headcount>  25  </headcount>  <avgsal>  12500  </avgsal>  </big-dept> <big-dept>  <deptno>  24  </deptno>  <  headcount >  18  </headcount>  <avgsal>  11327  </avgsal>  </big-dept>  <big-dept>  <deptno>  3  </deptno>  <headcount>  32  </headcount>  <avgsal>  10725  </avgsal>  < /big-dept> 

Exempel med hjälp av Microsoft SQL Server

  

   











 
		  
		  
	    DECLARE  @xml  XML  SET  @xml  =  '<root_element>  <branch_element>  <item_1>42</item_1>  <item_2>27</item_2>  </branch_element>  <branch_element>  <item_1>a</item_1>  <item_2>b </item_2>  </branch_element>  </root_element>'  VÄLJ  x  .  y  .  query  (  'for $s in self::node() return $s//item_1/text()'  )  som  i  ,  x  .  y  .  query  (  'for $s in self::node() return $s//item_2/text()'  )  som  j  FROM  @xml  .  noder  (  '/root_element'  )  AS  x  (  y  ); 

externa länkar