Ho creato un menų a tabs con sottomenų generato lato server (PHP ovviamente) da un file XML al volo con pagina attuale e e tabs aperto...
potete vederlo in azione su http://www.nexus6design.com/provaxmlmenu/sez1.php
questo č il file XML:
http://www.nexus6design.com/provaxmlmenu/menu.xml
e questo č il codice:

codice:
<?
error_reporting  (E_ERROR | E_WARNING | E_PARSE);

$file = "menu.xml";
$paginacorrente =  "http://";
$paginacorrente.= $_SERVER['HTTP_HOST'];    //outputs sitename.com etc
$paginacorrente.= $_SERVER['REQUEST_URI'];  //outputs /index.php etc

//PER TESTARE LA PAGINA CORRENTE
//$paginacorrente = "http://www.andreapaiola.it/chisonoemieiinteressi.php";

function xml2php($file) {
				 global $arr_vals;
   $xml_parser = xml_parser_create();
   if (!($fp = fopen($file, "r"))) {
       die("impossibile aprire il file XML");
   }
   $contents = fread($fp, filesize($file));
   fclose($fp);
	 xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
   xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 1);
   xml_parse_into_struct($xml_parser, $contents, $arr_vals, $index);
   xml_parser_free($xml_parser);
}
$arr_xml = xml2php($file);

$menuprincipale = '<div id="menu"><ul id="menuprincipale">';
$menusecondario = '<ul id="menusecondario">';


$n = -1;
foreach ($arr_vals as $value) {
$n++;
	 if ($value[level] == 2){
					//URL DEL LINK
					if ($value['attributes']['url'] != ""){
						 if ($value['attributes']['url'] == $paginacorrente){						 
						 $menuprincipale .= '<li id="paginacorrente" title="Questa č la pagina corrente: ' . "$paginacorrente" . '">' . $value['attributes']['testo'] . '';
						 //SE LA PAGINA CORRENTE č NEL MENU PRICIPALE MOSTRIAMO I SOTTOMENU RELATIVI
						 $sottomenuaperto = "si";						 
						 }else{
						 $sottomenuaperto = 'no';
						 			  $menuprincipale .= '[*]<a href="' . $value['attributes']['url'] . '"';
									  //DESCRIZIONE DEL LINK
						 			 if ($value['attributes']['descrizione'] != ''){
									  			$menuprincipale .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
								  	}
									  $menuprincipale .='">';
									  //TESTO DEL LINK
	 								  $menuprincipale .= $value['attributes']['testo'] . '</a>' . '';
        					  }
						 				}				 
											
		     }
				 
	 if ($value[level] == 3){
	 		if ($value['attributes']['url'] == $paginacorrente){
				 //echo('La pagina corrente č in un sottomenu');
				 $pagcorrsott = 'si';
				 //echo($value[level]);
				 //echo($value['attributes']['url']);
				 //echo($paginacorrente);
				 //TROVO LA POSIZIONE DEL TAG SUCCESSIVO DI 2° LIVELLO
				 //E LO FICCO NELLA VARIABILE
				 $i = $n;
				 for (;;) {
  			  if ($arr_vals[$i][level] == "2") {
					       break;
								    }
 										  //echo($arr_vals[$i][level]);
 											  $i++;
											}
						$tagsucc = $i;
						//echo($tagsucc);
					//TROVO LA POSIZIONE DEL TAG PRECEDENTE DI 2° LIVELLO
					//E LO FICCO NELLA VARIABILE
					$i = $n;
				 for (;;) {
  			  if ($arr_vals[$i][level] == "2") {
					       break;
								    }
 										  //echo($arr_vals[$i][level]);
 											  $i--;
											}
						$tagprec = $i;
						//echo($tagprec);
				 break;
			} else {
			$pagcorrsott = 'no';
			//echo('no sottomenų');
			}
			if ($sottomenuaperto == "si"){ 		 	 								
										//URL DEL LINK
										if ($value['attributes']['url'] != ""){
										 if ($value['attributes']['url'] == $paginacorrente){						 
						 				 		$menusecondario .= '<li id="paginacorrente" title="Questa č la pagina corrente: ' . "$paginacorrente" . '">' . $value['attributes']['testo'] . '';
											 }else{
						 			  	 $menusecondario .= '[*]<a href="' . $value['attributes']['url'] . '"';
									  	 //DESCRIZIONE DEL LINK
						 			 		 if ($value['attributes']['descrizione'] != ''){
									  			$menusecondario .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
								  		  }
									  			$menusecondario .='">';
									 				//TESTO DEL LINK
	 								  			$menusecondario .= $value['attributes']['testo'] . '</a>' . '';
        							 }
								     }						 									 
			  	
			}	 				
		}									
}




if ($pagcorrsott == "si"){
	 //SE LA PAGINA CORRENTE č IN UN SOTTOMENU
	 //echo('devo rifare il menų');
	 //echo($n);
	 //echo($arr_vals[$n]['attributes']['url']);
	 $menuprincipale = '<div id="menu"><ul id="menuprincipale">';
	 $menusecondario = '<ul id="menusecondario">';
	 $n = -1;
	 foreach ($arr_vals as $value) {
	 $n++;
	 			if ($value[level] == 2){
					//URL DEL LINK
					if ($value['attributes']['url'] != ""){
					//echo($n);
					//echo($value['attributes']['url']);
					//echo($arr_vals[$n]['attributes']['url']);
					//echo('
');
						 if ($value['attributes']['url'] == $arr_vals[$tagprec]['attributes']['url']){
						 //echo('sezione');						 
						 $menuprincipale .= '<li id="tabcorrente">' . $arr_vals[$tagprec]['attributes']['testo'] . '' . '';				 
						 }else{					
						 	  $menuprincipale .= '[*]<a href="' . $value['attributes']['url'] . '"';
									//DESCRIZIONE DEL LINK
						 			 if ($value['attributes']['descrizione'] != ''){
									  			$menuprincipale .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
								  	}
									  $menuprincipale .='">';
									  //TESTO DEL LINK
	 								  $menuprincipale .= $value['attributes']['testo'] . '</a>' . '';
        					  }
						 				}				 
											
		     }
				 if ($value[level] == 3){
				 //SE I TAGS FANNO PARTE DEL SOTTOMENU E SON FRATELLI DELLA PAGINA ATTUALE
				 if ($tagprec <= $n && $n <= $tagsucc){
				 //echo($value['attributes']['url']);
				 if ($value['attributes']['url'] == $paginacorrente){		
				 $menusecondario .= '<li id="paginacorrente" title="Questa č la pagina corrente: ' . "$paginacorrente" . '">' . $value['attributes']['testo'] . '';
				 } else {
				 $menusecondario .= '[*]<a href="' . $value['attributes']['url'] . '"';
					//DESCRIZIONE DEL LINK
					if ($value['attributes']['descrizione'] != ''){
									  	$menusecondario .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
					}
					$menusecondario .='">';
					//TESTO DEL LINK
	 				$menusecondario .= $value['attributes']['testo'] . '</a>' . '';
				 } 
				 
	 			 }
	   }
	 }	
}


$menuprincipale .= '[/list]';
$menusecondario .= '[/list]</div>';
echo ("$menuprincipale");
echo ("$menusecondario");
?>
mi aiutate a migliorarlo/ottimizzarlo?
e grazie