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

pasar valores a parametros en xsl

Estas en el tema de pasar valores a parametros en xsl en el foro de Programación General en Foros del Web. ¿Como se puede asignar valores a parametros en XSLT ? Es decir, yo tengo un xsl que extrae informacion de un XML dependiendo del valor ...
  #1 (permalink)  
Antiguo 21/04/2004, 10:21
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
pasar valores a parametros en xsl

¿Como se puede asignar valores a parametros en XSLT ?

Es decir, yo tengo un xsl que extrae informacion de un XML dependiendo del valor de un parametro que varía segun la opcion elegida de una select de HTML; este valor como se lo hago llegar al parametro $value del documento xsl. ?

gfracias
__________________
al Gonzo
  #2 (permalink)  
Antiguo 21/04/2004, 10:43
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Podrías poner algo de tu código donde lo quieras usar? Me refiero que no se como tendrás definido los templates en el XSL y quizás la solución que te pueda dar no sea para tu caso concreto.

De todas formas, mas o menos, una forma de usar parámetros en un template XSL es:


Código PHP:
<xsl:template match="/">
...
  <!-- 
definimos el parametro valorHTML que sera el que construiras dinamicamente desde tu codigo html -->
  <
xsl:param name="valorHTML"
    <
xsl:value-of select="'PEPE'"/> 
      <!-- 
ojo con las comillas simples pegadas a las comillas dobles-->
  </
xsl:param>
  <!-- 
en cada llamada html que hagas se supone que no será siempre PEPE-->
...

<
xsl:for-each select="etiqueta">
  <
xsl:apply-templates select=".">
  <!-- 
queremos usar el parametro valorHTML en un templatese lo pasamos en la llamada del template -->
    <
xsl:param name="valor">
      <
xsl:value-of select="$valorHTML"/>
    </
xsl:param>
  </
xsl:apply-templates>
...
</
xsl:for-each>

...
</
xsl:template>

<
xsl:template match="etiqueta">
  <!-- 
Declaramos el parámetro valor ya que llamamos en el template raiz a este template pasandole el parametro valor -->
  <
xsl:param name="valor"/>

  <!-- 
Imprimimos por ejemplo el valor del parámetro valor -->
  <
xsl:value-of select="$valor"/> 

</
xsl:template
Espero que te resuelva alguna duda, sino explicas lo que quieres hacer publicando parte de tu codigo.

Suerte
  #3 (permalink)  
Antiguo 21/04/2004, 11:02
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
Gracias, voy a ver con lo que me pasas como me arreglo. En caso de que no lo vea te mando el codigo mio.

Gracias.
__________________
al Gonzo
  #4 (permalink)  
Antiguo 21/04/2004, 11:14
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
De ná
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #5 (permalink)  
Antiguo 21/04/2004, 11:29
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
Hola Helvira

De nuevo aqui. No entiendo de que manera una pagina HTML con una select box normal como esta

<form name="form1" method="post" action="SKFK_PV.xml">
<select name="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>

le pasa un valor ( el 1, el 2 o el 3, en este caso) a una pagina xsl que está en otro documento. Acso hay que declarar la variavle param en la pagina HTML, dentro del form y enviarlo con submit ?

No se, o cada dia estoy mas torpe o esto de xsl esta pudiendo conmigo, parece facil pero no lo es !!!
__________________
al Gonzo
  #6 (permalink)  
Antiguo 22/04/2004, 01:46
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Aaaaaaaaaaaaahhhh!!!!!!!!!!!!!

Que tú lo que quieres es saber como pasar el valor que se selecciona en un select a un xsl!!!!!.... pos dilo antes, creía que lo que preguntabas era como usar parámetros/variables en xsl.

Pues... nunca he hecho algo así con XSL sólo, cuando digo sólo es porque lo único que he hecho con XML/XSL ha sido utilizando de por medio una herramienta llamada Cocoon que mas o menos hace las veces de "servidor XML" entonces ahora mismo no sabría decirte.

Aunque,... exactamente como va tu aplicación? Supongo que será un sitio web dinámico y por tanto usas algún lenguaje com ASP o PHP.

Que yo sepa, XSL no es capaz de leer parámetros de la Request (equivale al paso de parametros por formulario con método GET). En todo caso lo único que se me ocurre es que leas los datos seleccionados en el formulario con ASP/PHP (el que uses) y generes un XML intermedio que guarde en etiquetas XML tu selección y luego tu XSL leerá los valores de esas etiquetas como de costumbre.

No se... cuentame un poco mas el flujo que quieres en tu web.

Suerte!
  #7 (permalink)  
Antiguo 22/04/2004, 06:07
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
En un manual de XSLT que tengo dice que:
"para pasar el valor de la variable, se ha de usar la siguiente linea de comando

xt bookings.xml daymeeting.xsl myVariable=green room

(en caso de que uses xt)"

No se a que se refiere.

Si, las paginas usan ASP para pasar datos de una a otra. Asi que como tu dices se podria generar el XSL segun los valores elegidos y luego que se haga la trasformacion del XML con el XSL formado. Asi lo veo un poco mas claro.

Con el metodo POST de un Form no se puede pasar un determinado valor a un parametro de un XSL ? Pregunto.

Es que me parece increible que en el manual no explique mejor algo tan importante como esto !!! Creo que algo no estoy viendo !!


Sigo intentandolo

Mil gracias por tu esfuerzo
__________________
al Gonzo
  #8 (permalink)  
Antiguo 22/04/2004, 08:39
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
A ver...

Lo que yo creo que es... como te he dicho, el proyecto que estoy haciendo actualmente es el primero que hago con XML y estoy aprendiendo conforme las necesidades que me van surgiendo y aunque esa es una necesidad que ya me ha surgido, el hecho de usar la herramienta Cocoon me lo ha facilitado y no he tenido que investigarlo con XSL.

Pero por lo que entiendo yo que es el XML/XSLT, creo que no se pueden pasar parámetros (ni por POST ni por GET) tal y como estamos acostumbrados a entenderlo los que estamos hartos de usar ASP o PHP .

Yo veo la combinación XML/XSL como una página estática y supongo que sabrás que el HTML es estático y para leer en un HTML parámetros por GET o POST o lo haces con JavaScript (que se podría hacer, creo.. pero no es lo que se suele hacer) o pasas tu página de HTML a ASP/PHP, no? (creo que me sigues hasta aquí.

Entonces, por todo lo que he leído yo también sobre XSLT, para lo que quieres hacer necesitas un procesador de XSLT tales como Xalan, Sax o, el que tú has mencionado, XT (seguro que te suenan de haberlo leído en los manuales de XML)

Estos procesadores actúan más o menos de "compilador" y, por tanto, cada uno tiene su propio comando de ejecución con sus parámetros que vienen a ser archivo XML + archivo XSLT que da formato al XML y te genera un archivo de salida con el resultado de aplicar el XSL al XML que le has pasado.

Además, puedes pasarle otros parámetros opcionales entre los que se encuentran la posibilidad de enviar variables por POST/GET, que es lo que intenta explicarte el manual que has visto. Pro ejemplo, para Xalan la línea de ejecución del procesador es de la forma:

Código PHP:
java org.apache.xalan.xslt.Process -in encuesta5.xml -xsl encuesta5.xsl -out encuesta5-form.htm -param radio2 3 -param radio4 5 -param radio6 3 
donde a partir de la opción -param se le indican los parámetros radio2, radio4 y radio6 con los valores 3,5 y 3, respectivamente.

En el caso de Saxon, la sintaxis es de la forma:

Código PHP:
java com.icl.saxon.StyleSheet -o encuesta5-saxon.html encuesta5.xml encuesta5-saxon.xsl radio2=3 radio4=5 radio6=
y se parece más a la forma de paso de parámetros por la request que estamos acostumbrados los programadores de sitios web.

Todo este rollo que te acabo de soltar sólo es para explicarte lo que has leído y que no entendiste pero creo que no te ayuda mucho en dar una solución a lo que quieres hacer.

Me sigo manteniendo en la solución que te propuse antes sobre lo de crear un XML intermedio con las selecciones que se han hecho anteriormente en el formulario. Podrías añadir en tu misma página del formulario etiquetas XML con las selecciones del formulario de forma que si están vacías es que es la primera vez que se carga el form y si no están vacías es que ya se ha hecho alguna selección. Esto lo puedes hacer desde el asp que carga el formulario. No sé si me expliqué o te lié aún más.

De todas formas, nunca he hecho nada de ASP+XML. En el foro de ASP hay mensajes de XML con ASP.

Además, te remito a este post donde indico un par de enlaces sobre XForm:

Post de FdW sobre XForm

Y también mírate este artículo de la W3C:

XForms para diseñadores HTML

Espero que vayas comentando como vas avanzando con esto ya que me parece algo que le puede interesar a los que empezamos con XML.

Muchísima suerte

Un beso
  #9 (permalink)  
Antiguo 22/04/2004, 09:07
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Parece confirmarse que un XSL no puede leer parámetros que se le envían por request (estoy buscando por GET porque creo que es lo más sencillo).

Encontré este post donde preguntan lo mismo que tú. Mira la respuesta:

Lectura de parámetros URL en XSL

  #10 (permalink)  
Antiguo 22/04/2004, 11:20
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
Llevo horas intentando de aclararme con XSLT y me estoy volviendo loco!!

Vale Helvira, en cuanto vea lo que me dices te comento el resultado.

De momento he estado buscando mas informacion sobre XSLT, buscando, buscando he dado con un tutorial ( en realidad es un Help que se instala con la utilidad MSXML SDK) claro y en detalle sobre XML y XSLT; donde? en MSDN de Bili Gates... Es lo mejor que he encontrado. Lo digo para que si alguien empieza como yo a dar palos de ciego, no se mate en el intento:

http://www.microsoft.com/downloads/details.aspx?FamilyId=B432CD45-B7ED-4C32-A443-EC56F10EE175&displaylang=en

Hasta ahorita !!
__________________
al Gonzo
  #11 (permalink)  
Antiguo 22/04/2004, 11:29
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
Helvira, ya me voy aclarando...
Creo que con asp puedo salir del paso (la solucion tengo que darla mañana mismo) aunque sea una solucion rudimentaria, con pasos intermedios.

De ASP controlo poco pero lo suficiente para hacerlo. Sobre el resto que me dices seguire intentandolo.

Hasta luego
__________________
al Gonzo
  #12 (permalink)  
Antiguo 23/04/2004, 01:21
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Me he tirado toda la noche dándole vueltas a esto porque no creo que sea nada del otro mundo... y Voilá!..... creo que me he complicado la vida.

A ver... si tus páginas son ASP, supongo que tanto cuando muestras el formulario como cuando se hace submit, el origen de la pagina del formulario y el destino del action es una página ASP, no? ... pues, si lo que devuelves siempre con ASP es un xml y según lo que muestres aplicas un XSLT u otro, tan sólo tienes que hacer lo que ya te he dicho, y es generar un XML bien con la info del formulario que quieres cargar o bien con el resultado de la seleccion del usuario.

Yo no le daba más vueltas. Genera un XML diferente según si el usuario ha hecho ya submit o no y aplicas XSLT diferentes según el caso, y eso con ASP ya está más chupao.

Suerte!
  #13 (permalink)  
Antiguo 23/04/2004, 05:19
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 10 meses
Puntos: 0
Si, lo voy a hacer así. Es la forma mas fácil y no me queda tiempo.
De todas formas en cuanto pueda volveré sobre el tema para ver si hay otras formas.

Gracias por todo Helvira, me rio yo del soporte tecnico de algunas empresas...

un beso
__________________
al Gonzo
  #14 (permalink)  
Antiguo 28/04/2004, 13:51
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 22 años, 2 meses
Puntos: 0
ah, pero que terco salio el muchacho, si esta claro que la manera simple es generar el xml mediante el ASP o PHP y ya teniendo el XML el XSL es una mera plantilla, no hay porque pasar parametros directos al XSL!!
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:06.