Procesamiento de XSLT: dos archivos de entrada en uno de salida.
Estoy intentando procesar dos archivos xml
(documentos docbook
). En el documento hay estructuras repetidas que quiero extraer de ambos documentos, parametrizar y almacenar en un documento separado.
Para simplificar, aquí hay un ejemplo:
file1.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<input>
<structure>foo</structure>
<structure>bar</structure>
<structure>baz</structure>
file2.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<input>
<structure>abc</structure>
<structure>xyz</structure>
<structure>123</structure>
Y este es el resultado preferido que me gustaría generar.
output.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<output>
<structure origin="doc1">foo</structure>
<structure origin="doc1">bar</structure>
<structure origin="doc1">baz</structure>
<structure origin="doc2">abc</structure>
<structure origin="doc2">xyz</structure>
<structure origin="doc2">123</structure>
</output>
Ahora, no sé cómo convertir dos o más documentos (la URI puede estar codificada) y un parámetro adicional (doc1, doc2, estos también pueden estar codificados) en XSLT.
Agradecería mucho cualquier indicación.
davy.ai
Para extraer y parametrizar estructuras repetitivas de varios documentos
docbook
y almacenarlas en un documento separado, puedes utilizar el procesamiento XSLT con los siguientes pasos:doc1
odoc2
).document()
para leer cada documentodocbook
desde una URI específica.for-each
para iterar sobre cada elementostructure
en ambos documentos.structure
, crea un nuevo elementooutput
con un elemento hijostructure
y un atributoorigin
establecido con el valor del parámetro XSLT.output
resultante como el documento de salida final.Aquí tienes un ejemplo de hoja de estilo XSLT que implementa estos pasos:
Para utilizar esta hoja de estilo, puedes aplicarla a cualquier documento de entrada XML, ya que no depende de ninguna estructura de entrada específica. Al aplicarla, leerá los documentos
docbook
desde las URI codificadas (file1.xml
yfile2.xml
en este ejemplo) y parametrizará los elementosstructure
resultantes con el valor del parámetroorigin
. La salida será un documento XML con la estructura mostrada en el ejemplo (output.xml
).