Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2004, 04:35
Avatar de Helbira
Helbira
 
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Pregunta Tratar dos archivos XML en un mismo XSL simultáneamente

Tengo dos archivos XML con etiquetas totalmente distintas y quiero utilizar el contenido de los dos archivos en un mismo XSL para crear una página HTML a partir de la información de los dos archivos.

Alguna idea de como hacerlo o por donde podrían ir los tiros?

Supongo que tendrá algo que ver con los namespaces, no? Algún ejemplo sencillo?

Yo propongo los archivos XML y el XSL mas o menos para facilitar que me pongais un ejemplo.


archivo1.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<libro>
<categoria id="3"/>
<capitulo orden="1">
<titulo>Introduccion</titulo>
<texto>El objetivo de este archivo es conseguir mostrar la información de este xml junto con la información de otro xml distinto en una misma página html.</texto>
</capitulo>

<capitulo orden="2">
<titulo>Éxito conseguido</titulo>
<texto>De momento no se ha conseguido ningún éxito. </texto>
</capitulo>

</libro>

archivo2.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<biblioteca>
<categoria id="1">Ciencia Ficción</categoria>
<categoria id="2">Terror</categoria>
<categoria id="3">Técnico</categoria>
</biblioteca>

archivo.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="biblioteca">
<html>
<head>
<title>Dos XML en Un XSL</title>
</head>
<body>
<for-each select="categoria">
<xsl:apply-templates select="."/>
</for-each>
</body>
</html>
</xsl:template>
<xsl:template match="categoria">
<for-each select="libro[categoria/@id = @id]">
<!-- ojo.. se está mezclando justo en este punto etiquetas de los dos archivos xml -->
<xsl:for-each select="capitulo">
<xsl:apply-templates select="."/>
</xsl:for-each>
</for-each>
</xsl:template>
<xsl:template match="capitulo">
<xsl:value-of select="titulo"/>
<br/>
<p>
<xsl:value-of select="texto"/>
</p>
</xsl:template>
</xsl:stylesheet>

Al final me quedó un poco largo pero creo que se entiende.

Un beso