Hola GatorV, la cabecera si quee staba definida, aunque si te fijas no estaba en la primera linea. De todas maneras la puse tambien en la primera fila y nada.
Despues de buscar y rebuscar, y probar mil variantes del codigo, he conseguido que funcione pero no me explico porque.
La cuestion es que vi un ejemplo que saca el codigo del XML de dentro del codigo del PHP, lo probe y funciona.
Esto es como se me ha quedado el fichero php:
Código PHP:
<?php
header("Content-type:text/xml");
header("Cache-Control: no-cache, must-revalidate");
require_once("php/php.php");
$formUsuario = $_POST['usuario'];
$nombre= mysql_escape_string($formUsuario) ;
$servidor = "xxxxxxx";
$usuario = "xxxxx";
$pass = "xxxx";
$base_datos = "xxxxxx";
$mysql = "select * from general WHERE nombre='{$nombre}' ";
$conexion = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
$conexion-> consulta($mysql);
$a =$conexion->numero_filas();
$err = '';
$err .= $HTTP_POST_VARS["var"]."<br>";
$result = 1;
?>
<Valida>
<Control><?php
echo '<![CDATA[';
echo $a;
echo ']]>';
?></Control>
</Valida>
Como veis he sacado todo el codigo del xml, excepto la parte dinamica, de dentro del codigo php y ahora si que se recibe el codigo como xml y antes no.
A mi con esto ya me vale, pero si alguien me sabe decir porque esto es asi lo agradeceria.
Muchas gracias.