Foros del Web » Programando para Internet » Javascript » Frameworks JS »

mostrar XML en un DIV con PHP

Estas en el tema de mostrar XML en un DIV con PHP en el foro de Frameworks JS en Foros del Web. Hola: La cuestión es la siguiente: Estoy recuperando con una función en php los datos de un XML principal y creo otro XML sólo con ...
  #1 (permalink)  
Antiguo 02/05/2009, 10:25
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
mostrar XML en un DIV con PHP

Hola:
La cuestión es la siguiente:
Estoy recuperando con una función en php los datos de un XML principal y creo otro XML sólo con los datos que yo quiero del XML principal
El XML resultante tendrá su estilo asociado con un archivo XSL.
El tema es que yo quiero que el resultado de lo que he creado al crear un nuevo XML lo voy a mostrar en un archivo PHP en un <DIV> por medio de XAJAX

El caso es que me muestra los datos recuperados delXML principal pero no me lo muestra como si estuviera recuperando un XML ya que no está cogiendo los estilos que tiene asociados en el XSL.

Quiero saber cómo puedo mostrar estos datos recuperados de un XML princpial que está creando otro XML que irà asociado a un XSL y quiero mostrarlo con XAJAX pero no me aporta los estilos. Sé que algo falla y no sé el qué es.
Os dejo a continuación los archivos:

archivo contactos.xml (es el XML principal en el que están guardados todos los datos)
Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--<?xml-stylesheet href="contactos.xsl" type="text/xsl"?>-->
<AGENDA>
<GRUPO id_grupo='1' nombre_grupo='Amigos' estilo='estilo1'>
    <SUBGRUPO id_subgrupo='1' nombre_subgrupo='Amigos del trabajo' estilo='estilo2'>
        <CONTACTO id_contacto='1' estilo='estilo3'>
            <nombre>Pepito</nombre>
            <apellidos>Pérez</apellidos>    
        </CONTACTO>
        <CONTACTO id_contacto='2' estilo='estilo3'>
            <nombre>Julio</nombre>
            <apellidos>Gómez</apellidos>    
        </CONTACTO>
    </SUBGRUPO>
    
    <SUBGRUPO id_subgrupo='2' nombre_subgrupo='Amigos de toda la vida' estilo='estilo4'>
        <CONTACTO id_contacto='3' estilo='estilo3'>
            <nombre>JOSE</nombre>
            <apellidos>Martínez</apellidos>    
        </CONTACTO>
        <CONTACTO id_contacto='4' estilo='estilo3'>
            <nombre>Marta</nombre>
            <apellidos>Jimenez</apellidos>    
        </CONTACTO>
    </SUBGRUPO>
    
</GRUPO>
</AGENDA>
Ahora el archivo filtrar_datos_xml.php (que contiene la función que coge los datos que yo quiero del XML y crea otro XML que coge los estilos de contactos2.xsl
Código PHP:
<?php
require ('xajax/xajax.inc.php'); 
$xajax = new xajax(); 
function 
recogeSubgrupo($idSubgrupo)
{
    
header("Content-type: text/xml");
    
$salida .= "<?xml version='1.0' encoding='iso-8859-1'?>";
    
$salida .= '<?xml-stylesheet href="contactos2.xsl" type="text/xsl"?>';
    
$salida .= '<AGENDA>';
    
$xml = new SimpleXMLElement('contactos.xml'nulltrue); 
    foreach (
$xml->GRUPO->SUBGRUPO as $subgrupo) {
        if(
$subgrupo['id_subgrupo'] == $idSubgrupo)     {
            
$salida .= '<SUBGRUPO id_subgrupo="'.$subgrupo['id_subgrupo'].'" nombre_subgrupo="'.$subgrupo['nombre_subgrupo'].'">';
            foreach(
$subgrupo->CONTACTO as $contacto) {
                
$salida .= '<CONTACTO>';
                
$salida .=  '<nombre>'.$contacto->nombre.'</nombre>';
                
$salida .=  '<apellidos>'.$contacto->apellidos.'</apellidos>';
                
$salida .= '</CONTACTO>';
            }
            
$salida .='</SUBGRUPO>';
        }
    }
    
$salida .= '</AGENDA>';
    
$salida utf8_decode($salida);
    
$respuesta = new xajaxResponse(); 
    
$respuesta->addAssign("respuesta","txt",$salida); 
    return 
$respuesta
}
$xajax->registerFunction("recogeSubgrupo"); 
$xajax->processRequests();
?>
Ahora el archivo probando.php (que es en el que están los enlaces y la capa "respuesta" en la que se deberían cargar los datos del XML creado con los estilos que tiene asociados en su archivo XSL
Código PHP:
<?php 
require_once('filtrar_datos_xml.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Documento sin título</title>
   <?php
   
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
   
$xajax->printJavascript("xajax/");
   
?> 
</head>

<body>
<a href="#" onclick="javascript: xajax_recogeSubgrupo(1)">a ver los nombre de amigos del trabajo </a><br /><br />
<a href="filtrar_datos_xml.php?id_subcategoria=2">a ver los nombre de amigos de toda la vida</a>
<div id="respuesta"></div>
</body>
</html>
Por último os dejo el archivo contactos2.xsl que debería aportar los estilos a los datos obtenidos de la functión del archivo php
Código HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet  [
	<!ENTITY nbsp   "*">
	<!ENTITY copy   "©">
	<!ENTITY reg    "®">
	<!ENTITY trade  "™">
	<!ENTITY mdash  "—">
	<!ENTITY ldquo  "“">
	<!ENTITY rdquo  "”"> 
	<!ENTITY pound  "£">
	<!ENTITY yen    "¥">
	<!ENTITY euro   "€">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="estilos.css"/>
</head>
<body>
<table width="100%" border="1">
  <tr>
    <td>Nombre</td>
    <td>Apellidos</td>
    </tr>
    <xsl:for-each select="AGENDA/SUBGRUPO/CONTACTO">
    <tr>
      <td class="nombre"><xsl:value-of select="nombre"/></td>
      <td><xsl:value-of select="apellidos"/></td>
    </tr>
    </xsl:for-each>
</table>
</body>
</html>

</xsl:template>
</xsl:stylesheet> 
Y al mismo tiempo este archivo contactos2.xsl tiene asociados los estilos que tengo en el archivo estilos.css que es el siguiente:
Código HTML:
/* CSS Document */
.nombre {
	font-family: Verdana, Geneva, sans-serif;
	color: #F00;	
}

.apellidos {
		
}
Espero me podáis ayudar y que os hayais tomado vuestro tiempo aunque sé que la consulta es bastante larguita (perdón por ello)
Espero vuestras respuestas!!!! y GRACIAS DE ANTEMANO A TODA LA COMUNIDAD FOROSDELWEB.COM
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:59.