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>
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', null, true);
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();
?>
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>
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>
Código HTML:
/* CSS Document */ .nombre { font-family: Verdana, Geneva, sans-serif; color: #F00; } .apellidos { }
Espero vuestras respuestas!!!! y GRACIAS DE ANTEMANO A TODA LA COMUNIDAD FOROSDELWEB.COM