Procesar 2 XML con XSLT
Buenas, la cuestion es la siguiente:
Tengo dos documentos xml,
llamemos al primero fichero1.xml cuya estructura es la siguiente:
<?xml version="1.0?>
<documento1>
<elementos>
<a>prueba</a>
<a>prueba2</a>
</documento>
Luego hay otro documento fichero2.xml de estructura similar:
<documento2>
<b>mas pruebas</b>
<b>otra mas</b>
</documento2>
Entonces el problema esta en que quiero usar esos 2 xml con una xsl de manera que hago un fichero.xsl que contenga algo parecido a esto:
<xsl:stylesheet ....>
<xsl:template match=\'/\'>
<html>
... --> lo que sea
<xsl:apply-templates match=\'documento\' />
... --> lo que sea
<xsl:apply-templates match=\'documento2\' />
... --> lo que sea
</html>
</xsl:template>
<xsl:template match=\'documento\'>
<xsl:for-each select=\'a\'>
<i><xsl:value-of select=\'.\'></i>
</xsl:for-each>
</xsl:template>
<xsl:template match=\'documento2\'>
<xsl:for-each select=\'b\'>
<b><xsl:value-of select=\'.\'></b>
</xsl:for-each>
</xsl:template>
Y esto no funciona como se espera que es que procese todos los \'a\' del primer fichero y todos los \'b\' del segundo.
Por logica esto deberia funciona si se usa de la forma:
procesador -o fichero.html fichero.xsl fichero1.xml fichero2.xml
El procesador que uso es xsltproc y se supone que acepta varios ficheros de entrada pero no funciona.
¿Alguien sabe como hacer esto o alguna manera similar para conseguir el mismo objetivo?
Muchas gracias.
Tengo dos documentos xml,
llamemos al primero fichero1.xml cuya estructura es la siguiente:
<?xml version="1.0?>
<documento1>
<elementos>
<a>prueba</a>
<a>prueba2</a>
</documento>
Luego hay otro documento fichero2.xml de estructura similar:
<documento2>
<b>mas pruebas</b>
<b>otra mas</b>
</documento2>
Entonces el problema esta en que quiero usar esos 2 xml con una xsl de manera que hago un fichero.xsl que contenga algo parecido a esto:
<xsl:stylesheet ....>
<xsl:template match=\'/\'>
<html>
... --> lo que sea
<xsl:apply-templates match=\'documento\' />
... --> lo que sea
<xsl:apply-templates match=\'documento2\' />
... --> lo que sea
</html>
</xsl:template>
<xsl:template match=\'documento\'>
<xsl:for-each select=\'a\'>
<i><xsl:value-of select=\'.\'></i>
</xsl:for-each>
</xsl:template>
<xsl:template match=\'documento2\'>
<xsl:for-each select=\'b\'>
<b><xsl:value-of select=\'.\'></b>
</xsl:for-each>
</xsl:template>
Y esto no funciona como se espera que es que procese todos los \'a\' del primer fichero y todos los \'b\' del segundo.
Por logica esto deberia funciona si se usa de la forma:
procesador -o fichero.html fichero.xsl fichero1.xml fichero2.xml
El procesador que uso es xsltproc y se supone que acepta varios ficheros de entrada pero no funciona.
¿Alguien sabe como hacer esto o alguna manera similar para conseguir el mismo objetivo?
Muchas gracias.
mirate spacenames(espacio de nombres) para hacer la declaracion de los dos