Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2016, 04:39
p3cn0G
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 2 meses
Puntos: 0
Pasar datos XML a XSL en tablas HTML

Hola a todos, tengo el siguiente XML

Código:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="geografia.xsl"?>
<geografia xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		   xsi:noNamespaceSchemaLocation="geografia.xsd">
	<continentes>
		<continente nombre ="Europa"/>
		<continente nombre ="Asia"/>
		<continente nombre ="Africa"/>
		<continente nombre ="Oceania"/>
		<continente nombre ="America"/>
	</continentes>
	<paises>
		<pais continente="Europa">
			<nombre>España</nombre>
			<km2>1000000</km2>
			<poblacion>40000000</poblacion>
		</pais>
		<pais continente="Asia">
			<nombre>China</nombre>
			<km2>76767751</km2>
			<poblacion>3000000000</poblacion>
		</pais>
		<pais continente="Asia">
			<nombre>Mongolia</nombre>
			<km2>4151351325</km2>
			<poblacion>678000000</poblacion>
		</pais>
		<pais continente="Africa">
			<nombre>Nigeria</nombre>
			<km2>4151351</km2>
			<poblacion>145156616</poblacion>
		</pais>
		<pais continente="America">
			<nombre>Bolivia</nombre>
			<km2>567151351</km2>
			<poblacion>481841848</poblacion>
		</pais>
		<pais continente="Oceania">
			<nombre>Nueva Zelanda</nombre>
			<km2>670000</km2>
			<poblacion>20560000</poblacion>
		</pais>
		<pais continente="Europa">
			<nombre>Alemania</nombre>
			<km2>978000</km2>
			<poblacion>50000000</poblacion>
		</pais>
	</paises>
</geografia>
Mi intencion es recopilar todos estos datos en uan tabla HTML, tal que asi:

Código HTML:
<HTML>
  <HEAD>
    <TITLE>XPATH4</TITLE>
  </HEAD>
  <BODY>
    <table border="1">
		<tr>
  			<th>Contintente1</th>
                        <th>Continente2</th>
  		</tr>
		<tr>
  			<td>Pais</td>
                        <td>Pais otro</td>
  		</tr>
	</table>
  </BODY>
</HTML> 
Lo estoy haciendo mediante XSL, y tengo lo siguiente:

Código:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0"
			encoding="UTF-8" indent="yes"/>
<xsl:template match="geografia">
	<HTML>
  <HEAD>
    <TITLE>XPATH4</TITLE>
  </HEAD>
  <BODY>
    <table border="1">
		<tr>
  			<xsl:apply-templates select="continentes/continente"/>
  		</tr>
		<tr>
  			<xsl:apply-templates select="paises"/>
  		</tr>
	</table>
  </BODY>
</HTML>
</xsl:template>

<xsl:template match="continente">
	<th>
		<xsl:value-of select="@nombre"/>
	</th>
</xsl:template>

<xsl:template match="paises">
	<xsl:for-each select="geografia/continentes/continente">
		<xsl:variable select="@nombre" name="cont"/>
		<td>
			<xsl:apply-templates select="geografia/paises/pais[@continente = $cont]" />
		</td>
	</xsl:for-each>
</xsl:template>

<xsl:template match="pais">
	<p><b>Pais: </b><xsl:value-of select="nombre"/></p>
	<p><b>KM2: </b><xsl:value-of select="km2"/></p>
	<p><b>Poblacion: </b><xsl:value-of select="poblacion"/></p>
</xsl:template>

</xsl:stylesheet>
Pero en la salida del xsl solo me sale esto:

Código HTML:
<HTML>
  <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <TITLE>XPATH4</TITLE>
  </HEAD>
  <BODY>
    <table border="1">
      <tr>
        <th>Europa</th>
        <th>Asia</th>
        <th>Africa</th>
        <th>Oceania</th>
        <th>America</th>
      </tr>
      <tr></tr>
    </table>
  </BODY>
</HTML> 
No es lo que deseo. ¿Que estoy haciendo mal?
No se si mi duda esta en el lugar correspondiente de este foro, si no es asi, mis disculpas.
Si no me explique bien sobre la duda que tengo, diganlo por favor.
Muchas gracias! :)

Última edición por p3cn0G; 24/03/2016 a las 05:48