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
Nótese que las estructuras xml de los dos archivos han cambiado porque no me parecía que tuviera mucha lógica la que propuse inicialmente.

