Foros del Web » Creando para Internet » HTML »

xml y xsl

Estas en el tema de xml y xsl en el foro de HTML en Foros del Web. hola a todos, no se bien donde va este tema asi que me disculpan y que lo pongan en su sitio. Bueno mi problema es ...
  #1 (permalink)  
Antiguo 31/03/2011, 05:33
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
xml y xsl

hola a todos, no se bien donde va este tema asi que me disculpan y que lo pongan en su sitio.

Bueno mi problema es con xml y xsl

Tengo este codigo en xml

Código:
<?xml version="1.0" encoding="iso-8859-15"?>
<?xml-stylesheet type="text/xsl" href="empresas.xsl"?>
<Bolsa dia="5-7-2001" hora="11:34">
  <Empresa indice="general">
    <Nombre>General Motors</Nombre>
    <Simbolo>GMO</Simbolo>
    <Precio>28.875</Precio>
  </Empresa>
  <Empresa indice="tecno">
    <Nombre>Adobe</Nombre>
    <Simbolo>ADB</Simbolo>
    <Precio>92.250</Precio>
  </Empresa>
  <Empresa indice="tecno">
    <Nombre>Microsoft</Nombre>
    <Simbolo>MSF</Simbolo>
    <Precio>20.313</Precio>
  </Empresa>
  <Empresa indice="general">
    <Nombre>Coca-Cola</Nombre>
    <Simbolo>COC</Simbolo>
    <Precio>38.895</Precio>
  </Empresa>  
  <Empresa indice="tecno">
    <Nombre>Sun Microsystems</Nombre>
    <Simbolo>SUN</Simbolo>
    <Precio>45.119</Precio>
  </Empresa>
</Bolsa>
y tengo este otro en xsl


Código:
<?xml version="1.0" encoding="iso-8859-15"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
</head>
<body>
	<center><h1><xsl:value-of select="/Bolsa/@dia"/>-----<xsl:value-of select="/Bolsa/@hora"/></h1></center>
<table border="1">
                                    <!--CABECERA TITULO DE LA TABLA-->        
                            <tr>
                                            <td>Indice</td>
                                            <td>Nombre</td>
                                            <td>Simbolo</td>
                                            <td>Precio</td>
                            </tr>
                            <xsl:for-each select="/Bolsa/Empresa">
                                <!--ORDENAR POR PRECIO-->
                                <xsl:sort select="Precio"/>
                                <!--AQUI FILTRA LOS COLORES , SI ES MAYOR QUE 75 AZUL
                                    SI ES MENOR QUE 25 ROJO-->
                                <xsl:if test="Precio/text()>'75'">
                                        <style type="text/css">
                                            td {color:blue}
                                         
                                        </style>
                                </xsl:if>
                                <!--<xsl:if test="Precio/text()<'25'">
                                        <style type="text/css">
                                            td{ color:red;}
                                        </style>

                                </xsl:if>-->
                            <tr> 
                                   <!--FILTRA CUAL TIENE UN INDICE GENERAL Y CUAL NO
                                       PARA PONER EL *-->

                                        <xsl:if test="@indice!='general'">
                                           <td><xsl:value-of select="@indice"/></td>
                                           <td><xsl:value-of select="Nombre/text()"/></td>
                                           <td><xsl:value-of select="Simbolo/text()"/></td>
                                           <td><xsl:value-of select="Precio/text()"/></td>
                                       </xsl:if>
                                       <xsl:if test="@indice='general'">
                                           <td><xsl:value-of select="@indice"/></td>
                                           <td><xsl:value-of select="concat('*',' ',Nombre/text())"/></td>
                                           <td><xsl:value-of select="Simbolo/text()"/></td>
                                           <td><xsl:value-of select="Precio/text()"/></td>
                                       </xsl:if>

                            </tr>
                            </xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
vale la cosa es que quiero poner en la tabla que de colores, es decir, que para las empresas cuyo precio sea mayor que 75 aparezcan en azul y a las menores de 25 aparezca las celdas rojas. El problema es que me sale siempre azul, al poner el estilo con td, pero es que no se como ponerlo.

Espero su ayuda por favor.

Gracias

EDITO: ME SALE EL ERROR: ERROR LECTURA XML MAL FORMADO SI PONGO LO QUE HAY DENTRO DEL COMENTARIO QUE ES ESTO:

<!--<xsl:if test="Precio/text()<'25'">
<style type="text/css">
td{ color:red;}
</style>

</xsl:if>-->

PD: LAS MAYUSCULAS SON PARA RESALTAR NO PARA GRITAR

Última edición por Juny18; 31/03/2011 a las 05:47
  #2 (permalink)  
Antiguo 05/04/2011, 21:05
Avatar de the_ghost  
Fecha de Ingreso: octubre-2003
Ubicación: Caracas, Venezuela
Mensajes: 104
Antigüedad: 20 años, 6 meses
Puntos: 5
Respuesta: xml y xsl

Hola,

tampoco sé mucho de XSL, pero no debes comparar strings sino números, habría que remover las comillas simples, por lo tanto debería ser algo como:

Código XML:
Ver original
  1. <xsl:if test="Precio > 75">
  2.                                         (...)
  3.                                 </xsl:if>

Y para resaltar, puedes usar negritas en vez de mayúsculas.
__________________
ThE GhOsT
  #3 (permalink)  
Antiguo 17/05/2011, 06:02
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: xml y xsl

Yo creo que más bien el problema sean los signos de > y < ya que no los reconoce correctamente.

Sustituye el signo de > por &gt; y el de < por &lt;

Deberías poner <xsl:if test="Precio &gt; 75">

A ver si ahora te funciona.

Saludos.

Etiquetas: xml, 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 17:36.