LordRadium:
en primer lugar un consejo, no uses el Doctype que estás usando, lo usé hasta hace un año y todo iba bien, pero un buen día dejó de validar, siguiendo las sugerencias de la misma w3c usa este
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
La declaración xml no es indispensable que la pases, de todas maneras el problema bien podria ser que la configuración de php tenga habilitados "
short_open_tag", es decir, en on, por lo que tu <? antes del xml es ejecutado por el php. Que puedas poner en off esa directiva está sujeto a como esté instalado php en el Apache, si como modulo o como Cgi, si es esta última, en las ultimas versiones de php solo el administrador podrá hacer el cambio. La solución "universal" es esta, utilizar, dentro del php
Código PHP:
Ver original<?php
echo<<< XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
XML;
### y a partir de aqui
?>
<title>...</title>
tu código...
Una cosa más, el content-type más apropiado seria
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
Con respecto al primer problema, puede que sea otra cosa, pero lo ideal sería ver, no tu php, sino el código html generado.
Saludos