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

Ayuda!! Como Iterar en un segundo XML a partir de XSL????

Estas en el tema de Ayuda!! Como Iterar en un segundo XML a partir de XSL???? en el foro de Programación General en Foros del Web. Hola amigos! Me gustaría saber como puedo iterar sobre un segundo XML, tengo 2 archivos XML que estoy transformando a partir de un XSL para ...
  #1 (permalink)  
Antiguo 17/12/2008, 15:30
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Ayuda!! Como Iterar en un segundo XML a partir de XSL????

Hola amigos!

Me gustaría saber como puedo iterar sobre un segundo XML, tengo 2 archivos XML que estoy transformando a partir de un XSL para obtener un txt. Sin embargo, no encuentro la manera de realizar la iteración correcta.

Tengo lo siguiente:

terminal1.xml

Código:
<ResultedSet cant="3">
  <title>premios</title>
  <table>
  	<body>
      <row>
        <column>000260</column>
        <column>55037511681208518</column>
        <column>010319454652</column>
	<column>999999</column>
        <column>I99088</column>
        <column>4213164015594541</column>
        <column>27102008</column>
        <column>080524</column>
        <column>000492</column>
        <column>M</column>
        <column />
      </row>
      <row>
        <column>000264</column>
        <column>55032085764207218</column>
        <column>021619313454</column>
        <column>2000</column>
        <column>I03441</column>
        <column>4910891000658776</column>
        <column>27102008</column>
        <column>082852</column>
        <column>005433</column>
        <column>M</column>
        <column />
      </row>
      <row>
        <column>000272</column>
        <column>55055290626205818</column>
        <column>232526323646</column>
        <column>1000</column>
        <column>I18881</column>
        <column>4910893041563544</column>
        <column>27102008</column>
        <column>085454</column>
        <column>006150</column>
        <column>R</column>
        <column />
      </row>
  	</body>
  </table>
</ResultedSet>
terminal2.xml

Código:
<ResultedSet>
  <title>SG</title>
  <headline>
    <item key="Fecha">29102008</item>
  </headline>
  <table>
    <body>
      <row>
        <column>1</column>
        <column>I99088</column>
        <column>000260</column>
        <column>55037511681208518</column>
        <column>010405001</column>
        <column>4213164015594541</column>
        <column>30100004</column>
        <column>010319454652</column>
        <column>5</column>
        <column>M</column>
        <column>9</column>
      </row>
      <row>
        <column>2</column>
        <column>I03441</column>
        <column>000264</column>
        <column>55032085764207218</column>
        <column>010405001</column>
        <column>4910891000658776</column>
        <column>30100008</column>
        <column>021619313454</column>
        <column>5</column>
        <column>M</column>
        <column>9</column>
      </row>
      <row>
        <column>3</column>
        <column>I18881</column>
        <column>000272</column>
        <column>55055290626205818</column>
        <column>010405001</column>
        <column>4910893041563544</column>
        <column>30100015</column>
        <column>232526323646</column>
        <column>5</column>
        <column>R</column>
        <column>5</column>
      </row>
    </body>
  </table>
</ResultedSet>
Y terminales.xsl

Código:
<xsl:template match="/ResultedSet">
	<xsl:for-each select="table/body/row">
	  <xsl:text>TERMINAL-</xsl:text>
	  <xsl:value-of select="column[1]"/>
	  <xsl:value-of select="column[3]"/>
	  <xsl:value-of select="column[5]"/>

	  <xsl:if test="column[7]">
		<xsl:variable name="boleto" select="document('terminal2.xml')" />
		<xsl:for-each select="$boleto">
		   <xsl:value-of select="ResultedSet/table/body/row/column[7]"/>
		</xsl:for-each>
	  </xsl:if>

	  <xsl:value-of select="column[10]"/>
	  <xsl:value-of select="column[9]"/>
	  <xsl:text>&#xA;</xsl:text>
	</xsl:for-each>
</xsl:template>
Donde obtengo las columnas 1, 3, 5, 10 y 9 del terminal1.xml (archivo base) y del terminal2.xml trato de obtener los valores de la columna en la posición 7. Sin embargo, solo obtengo el valor de esta primera columna para los tres registros. Es decir:

TERMINAL-000260010319454652I9908830100004M000492
TERMINAL-000264021619313454I0344130100004M005433
TERMINAL-000272232526323646I1888130100004R006150

Cuando lo deseado es:

TERMINAL-000260010319454652I9908830100004M000492
TERMINAL-000264021619313454I0344130100008M005433
TERMINAL-000272232526323646I1888130100015R006150

De antemano, muchas gracias.
  #2 (permalink)  
Antiguo 17/12/2008, 15:45
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Respuesta: Ayuda!! Como Iterar en un segundo XML a partir de XSL????

cuando haces

<xsl:for-each select="$boleto">

No estás iterando sobre el Tag principal del XML ?

Creo que debería ser algo así

<xsl:for-each select="$boleto/ResultedSet/table/body/row/">
<xsl:value-of select="column[7]"/>

En verdad no te funcionará, porque creo que debes hacer una concatenación entre la variable y los tags, pero no recuerdo como hacerla...

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 17/12/2008, 16:08
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda!! Como Iterar en un segundo XML a partir de XSL????

Pues si, efectivamente no funcionó ya que ahora obtiene los tres valores en cada columna:

TERMINAL-000260010319454652I99088301000043010000830100015M000492
TERMINAL-000264021619313454I03441301000043010000830100015M005433
TERMINAL-000272232526323646I18881301000043010000830100015R006150

De cualquier forma, muchas gracias.
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:59.