Buenas.
Me alegro de que te sirva. En cuanto al error del apóstrofe, es mío, no me había dado cuenta, pero suerte que lo encontraste. Había leído algo al respecto sobre los apóstrofes / comillas simples, pero no le había prestado mayor atención, la verdad, porque hasta ahora nunca había tenido inconvenientes. Pero se soluciona fácil. Al generar el xml, en vez de comillas simples ('), hay que usar dobles (") y escaparlas con la barra invertida (\), o sea (\"). Acá va la corrección del script php, con la línea que estaba mal comentada entre /* y */:
Código PHP:
if ($consultaPaises) {
$xml = "<?xml version='1.0' encoding='iso-8859-1'?>";
$xml .= "<datos>";
$xml .= "<paises>";
$contPaises = 0;
while($rsPaises = mysql_fetch_array($consultaPaises)) {
/* $xml .= "<pais id='".$rsPaises[0]."' nombre='".$rsPaises[1]."' />"; */
$xml .= "<pais id=\"".$rsPaises[0]."\" nombre=\"".$rsPaises[1]."\" />";
$defaultPaises[$contPaises] = $rsPaises[0];
$contPaises++;
}
$xml .= "</paises>";
if (isset($_GET['id_pais'])) {
$id_pais = $_GET['id_pais'];
} else {
$id_pais = $defaultPaises[0];
}
$consultaProvincias = mysql_query("select id_provincia,nombre_provincia from provincias where id_pais=$id_pais");
if ($consultaProvincias) {
$xml .= "<provincias>";
$contProv = 0;
while ($rsProvincias = mysql_fetch_array($consultaProvincias) ) {
/* $xml .= "<provincia id='".$rsProvincias[0]."' nombre='".$rsProvincias[1]."' />"; */
$xml .= "<provincia id=\"".$rsProvincias[0]."\" nombre=\"".$rsProvincias[1]."\" />";
$defaultProvincias[$contProv] = $rsProvincias[0];
$contProv++;
}
$xml .= "</provincias>";
if (isset ( $_GET['id_provincia'] ) ) {
$id_provincia = $_GET['id_provincia'];
} else {
$id_provincia = $defaultProvincias[0];
}
$consultaMunicipios = mysql_query("select id_municipio,nombre_municipio from municipios where id_provincia=$id_provincia and id_pais=$id_pais");
if ($consultaMunicipios) {
$xml .= "<municipios>";
while ($rsMunicipios = mysql_fetch_array($consultaMunicipios) ) {
/* $xml .= "<municipio id='".$rsMunicipios[0]."' nombre='".$rsMunicipios[1]."' />"; */
$xml .= "<municipio id=\"".$rsMunicipios[0]."\" nombre=\"".$rsMunicipios[1]."\" />";
}
$xml .= "</municipios>";
}
$xml .= "</datos>";
header('Content-Type: text/xml');
echo $xml;
}
}
En cuanto a la "accesibilidad" de JavaScript, hay muchas opiniones. Lo cierto es que si un usuario tiene un navegador muy viejo, puede que no tenga JS. Por otra parte, JS puede deshabilitarse; y si el usuario lo tiene deshabilitado, bueno, todo lo que esté en JS no va a ser leído. En la práctica, la inmensa mayoría de los usuarios navegan con un navegador que soporta JS y lo tienen habilitado (y probablemente ni lo sepan).
Aún así, en teoría lo más recomendable para muchos es hacer tu sitio de forma tal que si alguien no tiene JS (o CSS, o Flash, o lo que sea que requiera tu sitio), de todos modos puedan acceder al contenido, aunque, lógico, va a ser más pobre o limitado en su presentación/funcionalidad. En la práctica, significa bastante más trabajo (una versión para los que tienen JS o otra para los que no) y en mi caso, a menos que un cliente lo pida específicamente (y lo pague!!!), no lo haría. Si algún despistado tiene instalado IE 4, por ej, bueno, podría actualizarse, lo que le llevaría 5 minutos, no le costaría un centavo y le daría un software mucho mejor... (muchos dirán que esa postura es una burrada, pero en fin, cada loco con su tema, y cada uno hace lo que le parece mejor/más práctico).
Suerte
Califa