Varios ficheros XML

JoseLuis
29 de Septiembre del 2004
Holas.

Veamos si me explico. Tengo un fichero en xml. En el fichero hago referencia a otros ficheros en XML y me gustaria transformar el fichero utilzando XSL (en concreto para apache xalan), de tal forma que, al encontrar estos tag que hacen referencia a un fichero externo, la transformacion XSL pueda acceder a ellos, abrirlos y continuar el parseo en dichos fichero externos.

Por ejemplo:
<root>
<seccion1>
<fichero url="file://c:/file1.xml"/> <--- quiero acceder al contenido de fichero 1.xml
</seccion1>

<seccion2>
<fichero url="file://c:/file2.xml"/> <--- quiero acceder a fichero2.xml
</seccion2>

<seccion3>
<fichero url="file://c:/file1.xml"/> <--- de nuevo quiero el contenido de fichero1.xml !!!
</seccion3>
</root>

He intentado utilizar 'document( .. )' para acceder a estos fichero, pero he aqui el problema:
- si intento utilizar 'document' 2 veces sobre el mismo fichero, 'xalan' lanza una excepcion (diche que el fichero ya esta en cache y se niega a volverlo a utilizarlo :-( ).

¿A alguien se le ocurre una solucion?
He intentado meter los ficheros en variables XSL y no lo he logrado...

Muchas gracias.

Jose Luis.

Jes?eyes
29 de Septiembre del 2004
¿Por qué no pruebas con XInclude? En Java 5.0 (o es 1.5?....), imagino que usas Java por lo de Xalan, se agregó el soporte de XInclude, que es una especificación del W3C para incluir documentos (o fragmentos de docs.) XML dentro de otros documentos XML. En Java, usas una instancia de
java.xml.parsers.DocumentBuilderFactory y cambias la propiedad xIncludeAware a true con el método setXIncludeAware, y te creas tu DocumentBuilder para cargar tu documento XML. Este debe tener una estructura parecida a:

<?xml version="1.0">
<midoc xmlns:xi="http://www.w3.org/2001/XInclude">
<!-- El elemento que incluye tu otro documento -->
<xi:include href="file1.xml"/>
</midoc>

Y deberia funcionar. Ojala y esto te sirva de algo, y si tienes alguna duda, mandamela a mi correo
Jesús