 
  
   
  
   
  
   
  
  как-то сократить
function wr ($teg, $value, $book = false, $tegStart = false, $teg2 = false, $teg3 = false) {
  global $xml;
  if (!$value) { 
    return NULL;
  }
  if ($tegStart && $teg2 && $teg3) {
    return array (
    	$xml->startElement($tegStart),
    	$xml->writeElement($teg, !$book ? $value : $book[$value]),
    	$xml->writeElement($teg2, $teg3),
    	$xml->endElement(),
    );
  } else {
    	return $xml->writeElement($teg, !$book ? $value : $book[$value]);
  }
} 
  
   
  
   
  
  function write ($teg, $value,  $book = false) {
  $global $xml;
  if ($value == false) { 
    return NULL;
  } 
  if ($book == false) {
    return $xml->writeElement($teg, $value);
  } else {
    return $xml->writeElement($teg, $book[$value]);
  }
}
// Использование без справочника 
write("Price", $data['price']);
// с справочником цветов 
write("Price", $data['price'], $colorist);$book в функцию вы передаёте уже нужный вам справочник, например $colorist         
  
  вот так заработало! Спасибо)
function wr ($teg, $value, $book=false) {
global $xml;
if ($value == false) {
return NULL;
}
if ($book == false) {
return $xml->writeElement($teg, $value);
} else {
return $xml->writeElement($teg, $colorist[$value]);
}
}
$book == false$colorist вне поле видимости функции        
В точку, причина, кроме всего, как раз может быть в этом