Retroceder   Foros del Web > Programación para sitios web > XML

Respuesta
 
Herramientas Desplegado
Antiguo 15-jun-2005, 12:01   #1 (permalink)
zayon ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2005
Mensajes: 20
Pasar variables de PHP a XSL

Hola, no logro aclararme de como pasar una variable al XSL que lo llamo desde un archivo PHP. Mi intención es la de que el XSL interprete el XML y segun el valor de $tipo se ejecute un template u otro.

Tengo 3 archivos:

XML
XSL - que interpreta el XML
PHP - que lanza los 2 archivos anteriores:

Codigo PHP:
--------------------
<?php
$tipo=$HTTP_GET_VARS['tipo'];

$xml = new DomDocument;
$xml->load('example.xml');

$xsl = new DomDocument;
$xsl->load('example.xsl');

$proc = new xsltprocessor;
$proc->importStyleSheet($xsl);

$proc->setParameter("",'tipo',$tipo);

echo $proc->transformToXML($xml);
?>
-----------------------

Y quiero que el archivo PHP le pueda pasar la variable $tipo al XSL para que en funcion de lo que marque $tipo se vea una u otra cosa en el navegador.
No me da error pero no sale nada, como si la variable estuviera vacía.
El caso es que ya lo he visto antes pero no recuerdo donde ni como era.

Muchas gracias
zayon está desconectado   Responder Citando
Antiguo 16-jun-2005, 02:44   #2 (permalink)
Helbira está en el buen camino
 
Avatar de Helbira
 
Fecha de Ingreso: noviembre-2002
Ubicación: <?xml version="1.0"?><ubicacion>En todos los lugares y a la vez en ninguno</ubicacion>
Mensajes: 1.207
tienes declarado el parametro en tu xsl con <xsl:param name="tipo" /> ??
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
Helbira está desconectado   Responder Citando
Antiguo 16-jun-2005, 05:01   #3 (permalink)
zayon ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2005
Mensajes: 20
Lo tengo declarado con with-param:

Codigo XSL:
-------------------
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" indent="no"/>
<xsl:template match="collection">
Hey! Welcome to my sweet CD collection!
<xsl:apply-templates select="cd">
<xsl:with-param name="valor"/><xsl:value-of select="$tipo"/>
</xsl:with-param>
</xsl:apply-template>

</xsl:template>
<xsl:template match="cd">
<h1><xsl:value-of select="$valor"/></h1>

</xsl:template>
</xsl:stylesheet>
--------------------------------

Codigo XML:
------------------
<collection>
<cd>
<title>Titulo 1</title>
<artist>Artista 1</artist>
<year>2005</year>
</cd>
<cd>
<title>Titulo 2</title>
<artist>Artista 2</artist>
<year>2005</year>
</cd>
</collection>
-----------------------
Codigo PHP:
---------------------
<?php
$tipo=$HTTP_GET_VARS['tipo'];
/* Load the two XML sources */
$xml = new DomDocument; // from /ext/dom
$xml->load('example.xml');

$xsl = new DomDocument;
$xsl->load('example.xsl');

/* Configure the transformer */
$proc = new xsltprocessor;
$proc->importStyleSheet($xsl); // attach the xsl rules
$proc->setParameter("",'tipo',$tipo);


echo $proc->transformToXML($xml); // actual transformation
?>
------------------
zayon está desconectado   Responder Citando
Antiguo 16-jun-2005, 05:19   #4 (permalink)
Helbira está en el buen camino
 
Avatar de Helbira
 
Fecha de Ingreso: noviembre-2002
Ubicación: <?xml version="1.0"?><ubicacion>En todos los lugares y a la vez en ninguno</ubicacion>
Mensajes: 1.207
OK, es correcto pero no es el parametro tipo lo que tienes declarado en tu XSL sino el parametro valor que es un aprametro que recibe el template "cd" cuyo valor lo lee del parametro "tipo" que no tienes declarado.

Lo tienes que declarar al ppio de tu XSL con <xsl:param name="tipo" /> para que sea un parametro global.

El codigo quedaria asi:

Código:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="iso-8859-1" indent="no"/>

<xsl:param name="tipo" />

 <xsl:template match="collection">
  Hey! Welcome to my sweet CD collection!
  <xsl:apply-templates select="cd">
	<xsl:with-param name="valor"/>
	</xsl:with-param>
  </xsl:apply-template>
	
 </xsl:template>
 <xsl:template match="cd">
	<h1>

 </xsl:template>
</xsl:stylesheet>
Y listo! Creo qeu con eso te funcionaria.

Suerte!
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
Helbira está desconectado   Responder Citando
Antiguo 16-jun-2005, 08:57   #5 (permalink)
Barraca está en el buen camino
 
Avatar de Barraca
 
Fecha de Ingreso: noviembre-2002
Ubicación: Dénia
Mensajes: 245
Enviar un mensaje por Skype™ a Barraca
Helbira, que placer verte por aquí :) (F)
Barraca está desconectado   Responder Citando
Antiguo 16-jun-2005, 11:25   #6 (permalink)
zayon ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2005
Mensajes: 20
Vale, muchisimas gracias helbira, ahora si funciona, pero el problema es que en mi máquina no funciona, tengo Internet Inf Server con php5 y a mi no me va. ¿Por qué puede ser?
Hago un phpinfo() y si que me sale, pero cuando lanzo este php me sale en blanco todo,
¿puede ser por alguna libreria .dll que no tengo bien puesta?

¿Hay que intalar php5 como cgi o como idapi?
zayon está desconectado   Responder Citando
Antiguo 17-jun-2005, 01:36   #7 (permalink)
Helbira está en el buen camino
 
Avatar de Helbira
 
Fecha de Ingreso: noviembre-2002
Ubicación: <?xml version="1.0"?><ubicacion>En todos los lugares y a la vez en ninguno</ubicacion>
Mensajes: 1.207
La verdad es que hace tiempo que no uso PHP en un IIS. Cuando lo instalé la última vez era PHP3 y no recuerdo exactamente si era como CGI o IDAPI. De tdas formas, recuerdo que seguí la instalación del archivo install.txt o algo asi paso a paso. Venía la forma de instalarlo según tu sistema operativo y versión del IIS.

Busca en el foro de PHP, creo recordar haber respondido preguntas sobre esto y seguramente puse clarito los pasos a seguir. Por lo menos resolveras tu duda sobre el cgi/idapi.

Mira tambien en la FAQ de PHP. Supongo que eso debe ser un tema candente en ese foro.
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
Helbira está desconectado   Responder Citando
Antiguo 20-jun-2005, 11:33   #8 (permalink)
zayon ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2005
Mensajes: 20
Gracias, ya está resuelto, el problema estaba en el uso de register_globals=OFF (debía estar a ON) ya que no creaba un array $HTTP_GET_VARS['tipo'], para solucionarlo sin cambiar el valor de register_globals es mejor usar la variable $_GET['tipo'].
zayon está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 05:54.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93