XSL - transformar un xml en varios

 
Vista:

transformar un xml en varios

Publicado por rilero (1 intervención) el 10/01/2008 09:59:37
quiero dividir un xml que contiene todos los libros de una biblioteca en un xml para cada libro, es decir un xml por libro como se podria hacer esta trasformacion? gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Dividir un XML en múltiples XMLs por libro

Publicado por Alejandro (227 intervenciones) el 06/07/2023 18:23:33
Para dividir un XML que contiene múltiples libros en XMLs individuales por libro, puedes utilizar XSLT y aplicar una transformación que seleccione y procese cada libro por separado.

Aquí tienes una solución básica utilizando XSLT 2.0 o posterior:

1
2
3
4
5
6
7
8
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/biblioteca/libro">
    <xsl:variable name="nombreArchivo" select="concat('libro_', position(), '.xml')"/>
    <xsl:result-document href="{$nombreArchivo}">
      <xsl:copy-of select="."/>
    </xsl:result-document>
  </xsl:template>
</xsl:stylesheet>

En esta solución, asumimos que el elemento raíz del XML original es `<biblioteca>` y cada libro está representado por el elemento `<libro>`. El resultado será un archivo XML separado para cada libro, donde el nombre del archivo se basará en la posición del libro en el XML original.

La plantilla `<xsl:template match="/biblioteca/libro">` selecciona cada libro individualmente. Dentro de esta plantilla, utilizamos `<xsl:result-document>` para generar un archivo XML separado para cada libro. El nombre del archivo se genera utilizando la función `concat()` y la posición del libro en el XML original. Luego, utilizamos `<xsl:copy-of>` para copiar el contenido completo del libro en el archivo resultante.

Puedes aplicar esta transformación utilizando un procesador XSLT compatible con XSLT 2.0 o superior. Por ejemplo, puedes usar la biblioteca Saxon en Java o la herramienta de línea de comandos `xsltproc` en entornos basados en Unix.

Espero que esta solución te ayude a dividir tu XML en XMLs individuales por libro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar