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

Uso de variables en xsl:value-of select="@numero"/>

Estas en el tema de Uso de variables en xsl:value-of select="@numero"/> en el foro de Programación General en Foros del Web. Hola, tengo un archivo xml que contiene valores del tipo, tiene que ser de esta forma, no es valido de otra <personas> <persona1> <nombre>Jaime</nombre> <apellido>Mora</apellido> ...
  #1 (permalink)  
Antiguo 03/03/2009, 12:45
Avatar de Zaseg  
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años, 2 meses
Puntos: 0
Uso de variables en xsl:value-of select="@numero"/>

Hola,

tengo un archivo xml que contiene valores del tipo, tiene que ser de esta forma, no es valido de otra
<personas>
<persona1>
<nombre>Jaime</nombre>
<apellido>Mora</apellido>
</persona1>
<persona2>
<nombre>Marcos</nombre>
<apellido>Barrero</apellido>
</persona2>
</personas>

Y el XSL

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="web xml" xmlns:fo="webxml/Format">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="no"/>
<xsl:variable name="num">1</xsl:variable>
<xsl:variable name="prueba" select="concat('persona',$num,'/nombre')"/>

<xsl:template match="personas"> <fo:root xmlns:fo="web xml/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="all-pages">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="all-pages">
<fo:flow flow-name="xsl-region-body">
<fo:block font-family="Times" font-size="14pt" text-align="center" space-after="16pt">
Nombre: <xsl:value-of select="$prueba"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>


Mi intención es que al poner Nombre: <xsl:value-of select="$prueba"/>
me aparezca por pantalla Nombre: Jaime, y lo que me aparece es Nombre: persona1/nombre

Estoy usando XSL para formar PDF, pero esto no creo que debiese variar.

He probado ponerlo entre llaves <xsl:value-of select="{$prueba}"/> y no aparece nada, solo aparace Nombre:

¿Alguna idea de como hacerlo?

He quitado los enlaces xml ya que no me permite añadir direcciones web por ser un usuario recién creado.

Gracias por vuestra ayuda

Última edición por Zaseg; 03/03/2009 a las 12:54
  #2 (permalink)  
Antiguo 04/03/2009, 02:35
Avatar de Zaseg  
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Uso de variables en xsl:value-of select="@numero"/>

Otra pregunta más,
suponiendo que tuviese hasta persona8, como haría un bucle para que se parase en persona8?

Gracias por vuestra ayuda
  #3 (permalink)  
Antiguo 04/03/2009, 05:30
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Respuesta: Uso de variables en xsl:value-of select="@numero"/>

no es correcto hacer <persona1><persona2>

debería ser <persona id="1"><persona id="2">

Así el foreach te queda como personas/persona y ahí si va a buclear por todas las personas, de tu forma hace solo una iteración...

si quieres que sea solo hasta 8 puedes hacer un if que rompa el bucle, no se si hay alguna función para eso...seguramente la haya...

Saludos
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 04/03/2009, 05:39
Avatar de Zaseg  
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Uso de variables en xsl:value-of select="@numero"/>

Gracias por la respuesta.
el problema es que el XML lo recibo así

<persona1>

<persona2>
.
.
.
El numero de personas puede ser variables.


¿Hay alguna manera de hacerlo?
  #5 (permalink)  
Antiguo 04/03/2009, 06:30
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Respuesta: Uso de variables en xsl:value-of select="@numero"/>

hay una función que te devuelve el nombre de la etiqueta...

<xsl:when test="local-name(.) = 'persona8'">

Espero que te sirva...

Saludos
__________________
Esteban Quintana
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:21.