Ver Mensaje Individual
  #5  
Antiguo 02-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.109
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hasta donde yo llegué no he generado archivos XML sino es como el compañero Ñuño comenta, es decir, un tanto "a mano", escribiendo tanto la estructura como los datos, propiamente dichos, directamente, sin utilizar ninguna clase, extensión de PHP o similar.

Me consta que hay clases para trabajar con XML, esto es, un poco parecido a como podemos hacer en Delphi con la clase "TXmlDocument". Ahora mismo no sabría decirte de ninguna dirección, pero, aquí mismo, en estos Foros, me parece que se ha comentado alguna vez sobre el tema.

Respondo más bien porque acabo de leer en otro Hilo tuyo, Papulo, que pensabas en mí cuando lo hacías en PHP... ¡ay, señor! ¡Y ni siquiera había visto el Hilo al que hago referencia sino hasta hoy mismo, casi por casualidad! Bueno. Tú mismo, no sé de dónde sacaste que yo pudiera saber más que tú de PHP... en todo caso a uno estas cosas como que le dejan el ego agustito.

Cita:
Empezado por Papulo
Primera pregunta ¿como verá el cliente el XML que le tengo que devolver?
No me refiero a la estructura, sino a si se verá algo en la pantalla como en la imagen que adjunto ¿o es totalmente transparente al navegador y ya esta?
No vi la imagen que adjuntas... ¿la llegaste a adjuntar? En todo caso, otra vez, hasta donde llegué, los navegadores (y no navegador) pueden hacer con el XML de su capa un sayo, esto es, cada cual "representará" el XML como mejor le parezca: unos lo podrán hacer en forma de árbol, otros en forma de "tabla", otros... quién sabe.

Algo que apenas he tocado, pero, que sé que existe, es el XSL (ni siquiera sé si acierto con las siglas), que viene a ser una hoja de estilo asociada a un documento XML, de manera similar a como se puede asociar una hoja de estilo (CSS, en este caso) a un documento HTML. Tendrías que investigar un poco sobre esto, pero, el caso es que es posible "transformar" el documento XML, o sea sus datos, un tanto a tu antojo, gracias a "XSL", con el fin de mostrar los datos del XML en el navegador de una manera "personalizada".

Según he leído y puede comprobar cualquiera, la forma de representar los documentos XML por los navegadores, no es la mejor para un "usuario neófito", esto es, los datos se muestran, pero, también se muestra la estructura del documento... en fin, supongo que los navegadores no pueden hacer mucho más, puesto que el XML es un "lenguaje" un tanto anárquico, o sea, en el que puedes y de hecho tienes tus propias etiquetas... que no tienen porqué ser estas o aquellas... y esto hace que los navegadores no puedan "parsear" el XML como no sea de una forma "generalista": bien mostrando su contenido como un árbol o como una tabla, por ejemplo.

No sé. Pienso que tendrías que echar un vistazo a XSL, puesto que me parece que puede ser lo que estés precisando. Como no fuera que tu encargo fuera generar el XML y punto pelota: cómo se lea ese documento... puede no correr por cuenta tuya, puede que tu cliente cuente con algún programa que se encarge de ese asunto. En todo caso no estaría demás que le dieras un vistazo, por lo menos, a las hojas de estilo para XML, o sea, al XSL famoso.

Cita:
Empezado por Papulo
Yo creía que el resultado tenía que tener extensión *.xml pero veo que no.
Bueno. Ahí puede que Ñuño ya dijera lo que ocurre... y es que depende. Por ejemplo, a un lector de "feeds" le basta conque le llegue el contenido apropiado, con la cabecera apropiada, es decir, con la conocida función "header" de PHP se le indica al cliente (sea este un lector de "feeds", sea un navegador) que el contenido se trata de XML, y ya él se encarga de hacer lo propio con el mismo, o sea.

Código PHP:
header('Content-type: text/xml; charset="utf-8"'); 
Ahora bien, si el contenido XML que generas fuera "descargable",... pues sería el caso de indicar en las cabeceras HTTP que se trata de contenido XML y además que se descargue con la extensión correspondiente, si es que esto fuera a tener alguna utilidad: por ejemplo para que tu cliente pudiera descargar el archivo XML y supiera perfectamente de qué se trata, puesto que la misma extensión se lo indicara.

Sobre esto último, la verdad, es que me pierdo un poco. Copiaré una función a continuación que puede no ser perfecta, pero, que, está funcionando ahora mismo en cierta página Web. Como podrás ver en la función esta recibe como parámetro cierta "salida" (que podría ser el código XML, propiamente) y como un segundo parámetro un "tipo de salida". En todo caso lo que quiero es que veas cómo puede indicársele al cliente (navegador) que tiene que descargar un archivo (con la salida) y que este archivo tiene una determina extensión, un determinado tamaño, etc.

Código PHP:
  /**
   * Retorna la salida de cualquiera de los formatos de exportación.
   * Con las cabeceras que usamos pretendemos forzar la descarga del
   * archivo con los enlaces exportados. Nótese cómo usamos el pará-
   * metro $formato para establecer la extensión del archivo de salida.
   *
   * @author dec
   * @since 0.6b
   * @version 0.3
   * @access private
   * @param string $salida
   * @param string $formato
   */
  
function Salida($salida$formato 'html')
  {
    global 
$usuario;

    if(
$this->comprimirSalida && function_exists('gzencode'))
    {
      
$salida gzencode($salida);
      
header("Content-Type: application/x-bzip2");
      
header("Content-Disposition: attachment; filename=".$usuario->LoginUsuario()."-loturak.$formato.zip");
    } else {
      
header("Content-Type: application/force-download");
      
header("Content-Disposition: attachment; filename=".$usuario->LoginUsuario()."-loturak.$formato");
    }
    
header("Content-Description: File Transfer");
    
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    
header("Content-Length: " strlen($salida));
    echo 
$salida;
    die;
  } 
No he tocado para nada la función, creo que puedes entender más o menos lo que quiero decir, otra cosa es que te sirva para algo. Si tienes cualquier otro comentario pues ya sabes que estamos por aquí para tratar de echar una mano.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita