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:
terminal2.xml<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>
Código:
Y terminales.xsl<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>
Código:
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:<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>
</xsl:text> </xsl:for-each> </xsl:template>
TERMINAL-000260010319454652I9908830100004M000492
TERMINAL-000264021619313454I0344130100004M005433
TERMINAL-000272232526323646I1888130100004R006150
Cuando lo deseado es:
TERMINAL-000260010319454652I9908830100004M000492
TERMINAL-000264021619313454I0344130100008M005433
TERMINAL-000272232526323646I1888130100015R006150
De antemano, muchas gracias.