XSL - pasar un valor a un xsl

 
Vista:

pasar un valor a un xsl

Publicado por Mari (1 intervención) el 18/05/2007 12:42:14
Hola !!

No se si lo que quiero hacer, realmente se pueda hacer con xsl, pero la idea es la siguiente

Yo tengo un xml estático, con información sobre libros

<biblioteca>
<libro>
<isbn>00225</isbn>
<nombre>sincrodestino</nombre>
<autor>deepak chopra</autor>
<año>2004</año>
</libro>
<libro>
<isbn>00235</isbn>
<nombre>etiquetado ecologico de peces</nombre>
<autor>comisión europea</autor>
<año>2002</año>
</libro>
</biblioteca>

Tengo un xsl, en el cual alico un filtro for-each

<xsl:param name="id"/>
..
..
<xsl:for-each select="biblioteca/libro[isbn= $id]">
..
..
..
</xsl:for-each>

Cuando le doy un valor de forma manual al parámetro (<xsl:param name="id" select=00235/>) me funciona el filtrado, pero cuando no le doy un valor.. no funciona.

Quiero saber si se puede enviar un parametro (el id) al xml o al xsl, para que pueda hacer la selección del libro que quiero. He intentado enviar un parametro asi: http://mysite.com/tulibro.xml?id=00235

pero no me ha funcionado...se puede hacer esto que quiero?? hay alguna otra forma sencilla de hacerlo??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pasar un valor a un xsl

Publicado por Barrejat (4 intervenciones) el 10/12/2007 23:00:27
Que yo sepa, el parámetro que le mandas con la URL no vas a poder cogerlo directamente con XSLT.

Yo estoy intentando hacer algo parecido... He tenido que hacer un script con Javascript para capturar los parámetros del URL (en mi caso sería algo así como www.miweb.org/plantas.xml?tipus=f&article=3)... pero ahora me he quedado bloqueado en cómo asignar el valor de esos parámetros (ahora los tengo en sendas variables de javascript, ya que los he conseguido capturar de la URL) a un xsl:param o un xsl:variable.

Es decir, no sé cómo asignar un valor desde Javascript a un xsl:param o xsl:variable (o cómo leer desde XSLT el valor de una variable de Javascript).

Estoy bloqueado en este punto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar un valor a un xsl

Publicado por dario (1 intervención) el 16/02/2009 20:04:23
<?xml version="1.0" ?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <!-- localized strings
-->
<xsl:variable name="ColumnHeader_Date">Fecha</xsl:variable>
<xsl:variable name="ColumnHeader_Time">Hora</xsl:variable>
<xsl:variable name="ColumnHeader_From">De</xsl:variable>
<xsl:variable name="ColumnHeader_To">Para</xsl:variable>
<xsl:variable name="ColumnHeader_Message">Mensaje</xsl:variable>
- <!-- variables
-->
<xsl:variable name="Debug">0</xsl:variable>
<xsl:variable name="TableStyle">font-family:MS Shell Dlg 2; font-size:67%; text-align:left; vertical-align:top; table-layout:fixed</xsl:variable>
<xsl:variable name="GutterStyle">width:2ex</xsl:variable>
<xsl:variable name="HeaderStyle">border-bottom:1 solid black</xsl:variable>
<xsl:variable name="UseZebraStripe">1</xsl:variable>
<xsl:variable name="ZebraStripeStyle">background-color:#e0edff</xsl:variable>
<xsl:variable name="MostRecentSessionFirst">0</xsl:variable>
- <xsl:template match="Log">
- <html dir="ltr">
- <head>
- <title>
Message Log for
<xsl:value-of select="@LogonName" />
<xsl:if test="$Debug = 1">(Debug)</xsl:if>
</title>
- <xsl:if test="$Debug = 1">
<span style="font-family:trebuchet ms; font-size:120%">Debug Version</span>
<hr />
</xsl:if>
</head>
- <body style="margin:0">
- <table id="BodyTable" style="{$TableStyle}" cellspacing="0">
- <xsl:if test="$Debug = 1">
<col style="vertical-align:top; width:5ex;" />
<col style="{$GutterStyle}" />
</xsl:if>
<col style="width:16ex;" />
<col style="{$GutterStyle}" />
<col style="width:16ex;" />
<col style="{$GutterStyle}" />
<col style="width:21ex;" />
<col style="{$GutterStyle}" />
<col style="width:21ex;" />
<col style="{$GutterStyle}" />
<col style="width:70ex;" />
- <thead>
- <tr>
- <xsl:if test="$Debug = 1">
<th style="{$HeaderStyle}">SID</th>
<th />
</xsl:if>
- <th style="{$HeaderStyle}">
<xsl:value-of select="$ColumnHeader_Date" />
</th>
<th />
- <th style="{$HeaderStyle}">
<xsl:value-of select="$ColumnHeader_Time" />
</th>
<th />
- <th style="{$HeaderStyle}">
<xsl:value-of select="$ColumnHeader_From" />
</th>
<th />
- <th style="{$HeaderStyle}">
<xsl:value-of select="$ColumnHeader_To" />
</th>
<th />
- <th style="{$HeaderStyle}">
<xsl:value-of select="$ColumnHeader_Message" />
</th>
</tr>
</thead>
- <tbody style="vertical-align:top">
- <xsl:choose>
- <!-- newest session first
-->
- <xsl:when test="$MostRecentSessionFirst = 1">
- <xsl:apply-templates>
<xsl:sort select="@SessionID" order="descending" data-type="number" />
<xsl:sort select="@DateTime" order="ascending" />
</xsl:apply-templates>
</xsl:when>
- <!-- oldest session first
-->
- <xsl:otherwise>
- <xsl:apply-templates>
<xsl:sort select="@SessionID" order="ascending" data-type="number" />
<xsl:sort select="@DateTime" order="ascending" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</tbody>
</table>
</body>
</html>
</xsl:template>
- <xsl:template match="Message">
- <tr>
<xsl:call-template name="CommonMessageProcessing" />
- <td>
<xsl:apply-templates select="From/User" />
</td>
<td />
- <td>
<xsl:apply-templates select="To/User" />
</td>
<td />
- <td>
- <span>
- <xsl:attribute name="style">
<xsl:value-of select="Text/@Style" />
</xsl:attribute>
<xsl:value-of select="Text" />
</span>
</td>
</tr>
</xsl:template>
- <xsl:template match="Invitation|InvitationResponse|Join|Leave">
- <tr>
<xsl:call-template name="CommonMessageProcessing" />
<td />
- <!-- From
-->
<td />
<td />
- <!-- To
-->
<td />
- <td>
- <span>
- <xsl:attribute name="style">
<xsl:value-of select="Text/@Style" />
</xsl:attribute>
<xsl:value-of select="Text" />
</span>
</td>
</tr>
</xsl:template>
- <xsl:template match="User">
- <!-- add a comma before all but the first user
-->
<xsl:if test="position() != 1">,</xsl:if>
<xsl:value-of select="@FriendlyName" />
</xsl:template>
- <xsl:template name="CommonMessageProcessing">
- <!-- zebra-stripe the sessions
-->
- <xsl:if test="$UseZebraStripe = 1">
- <xsl:if test="(@SessionID mod 2) = 1">
- <xsl:attribute name="style">
<xsl:value-of select="$ZebraStripeStyle" />
</xsl:attribute>
</xsl:if>
</xsl:if>
- <xsl:if test="$Debug = 1">
- <td>
<xsl:value-of select="@SessionID" />
</td>
<td />
</xsl:if>
- <td>
<xsl:value-of select="@Date" />
</td>
<td />
- <td>
<xsl:value-of select="@Time" />
</td>
<td />
</xsl:template>
</xsl:stylesheet>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar