Foros del Web » Programación para mayores de 30 ;) » Programación General »

Funciones en xsl

Estas en el tema de Funciones en xsl en el foro de Programación General en Foros del Web. Saludo a todos, Necesito crear una función en mi archivo xsl pero no se cómo hacerlo, si alguno sabe le agradeceria me dijera como. Gracias...
  #1 (permalink)  
Antiguo 03/02/2005, 12:29
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 10 meses
Puntos: 0
Funciones en xsl

Saludo a todos,


Necesito crear una función en mi archivo xsl pero no se cómo hacerlo, si alguno sabe le agradeceria me dijera como.


Gracias
  #2 (permalink)  
Antiguo 05/02/2005, 03:09
 
Fecha de Ingreso: febrero-2004
Mensajes: 221
Antigüedad: 20 años, 9 meses
Puntos: 0
Primero, que necesitas hacer?

En XSLT puedes crear templates. Por ejemplo, un template que muestre X veces el texto "Foros del Web"
Código HTML:
 <xsl:template name="titulos">
		<xsl:param name="cuantos">1</xsl:param>
		<xsl:if test="$cuantos &gt; 0">
			<xsl:text> Foros del Web</xsl:text>  
				
			<xsl:call-template name="titulos">
				<xsl:with-param name="cuantos" select="$cuantos- 1"/>
			</xsl:call-template>
		</xsl:if>
	</xsl:template> 
Y lo llamas desde cualquier parte del documento con:

Código HTML:
 <xsl:call-template name="titulos">
    <xsl:with-param name="cuantos" select="0"/>
  </xsl:call-template> 
Para definir funciones propiamente dichas, tendrias que recurrir a un lenguaje externo. Por ejemplo, en PHP:

Código PHP:
$xslt = new XSLTProcessor();
// Esta linea registra todas funciones para que las puedas usar desde XSLT
$xslt->registerPHPFunctions(); 
Entonces cada vez que necesites llamar a una funcion:

Código HTML:
<xsl:value-of select="php:function('funcion', 'argumento')" /> 
Obviamente antes tendrias que declarar el namespace php agregando
xmlns:php="http://php.net/xsl"
a <xsl:stylesheet>
  #3 (permalink)  
Antiguo 10/02/2005, 07:42
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola Appletalk,

Gracias por tu respuesta, todavia no he hecho la prueba pero por lo que veo deberia funcionar. El problema que tengo es el siguiente: tengo un xml de entrada que no genero yo aunque podria cambiarle el formato de alguna manera, un trozo del xml es el siguiente:

Código:
<pregunta idpreg="preg02">
 <titulo_pregunta>¿Que le parecio la atencion?</titulo_pregunta>
 <tipo_pregunta tipo="Seleccion Multiple"/>
 <ocultar pregunta="No"/>
 <opcion idop="1" mostrar="preg05">Buena</opcion>
 <opcion idop="2" mostrar="preg03">Regular</opcion>
 <opcion idop="3">Mala</opcion>
 <opcion_extra>Desea dar su opinion</opcion_extra>
</pregunta>
Bien, no tengo problemas en generar el html con xslt, el problema que estoy tratando de solucionar en este momento es ocultar y mostrar las preguntas según lo indique el atributo mostrar, hice algo con javascript pero no logro hacer que funcione con todas las opciones porque en el onclick del radio buttom de las opciones que tienen el atributo mostrar le coloco que ejecute la función y en las que no lo tienen no lo hago. Tengo un par de semanas tratando de solucionar este problema pero no lo he conseguido. Si tienes alguna sugerencia te lo agradecería.

  #4 (permalink)  
Antiguo 10/02/2005, 08:47
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 10 meses
Puntos: 0
Ya probe lo de usar las funciones de php en xsl y funcionó perfectamente, lo que me hace preguntarte cómo paso los argumentos, es decir si quiero pasar variable que tengo en el xsl cómo hago. Eso no soluciona mi problema anterior asi que si tienes alguna sugerencia te lo agradeceré.


Bye
  #5 (permalink)  
Antiguo 10/02/2005, 11:35
 
Fecha de Ingreso: febrero-2004
Mensajes: 221
Antigüedad: 20 años, 9 meses
Puntos: 0
php:function('nombrefuncion', string('argumento1'), string($argumento2), string(@atributo) )

En el primer argumento le paso una string, en el segundo una variable y en el tercero un atributo que obtengo por xpath.
  #6 (permalink)  
Antiguo 10/02/2005, 12:09
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias por la información
  #7 (permalink)  
Antiguo 11/02/2005, 14:54
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola Appletalk,

Es posible añadir líneas a la salida html que produce el xsl desde php. Me explico, coloque una función que llena un arreglo, la llamo desde el xsl y lo lleno, luego en un punto posterior del xsl me gustaria tomar valores del arreglo php para agregar campos hidden en la salida del html que produce el xsl, sabes si eso es posible???

bye y gracias de antemano
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 23:02.