XSL - Transformar xml no jerárquico a jerárquico

 
Vista:

Transformar xml no jerárquico a jerárquico

Publicado por Alvaro (1 intervención) el 08/03/2007 10:45:28
Tengo el siguiente problema, tengo k convertir este xml:

<sumario>
<seccion txt=""/>
<subseccion txt=""/>
<organismo txt=""/>
<anuncio txt=""/>
<organismo txt=""/>
<anuncio txt=""/>
<organismo txt=""/>
<anuncio txt=""/>
<subseccion txt=""/>
<organismo txt=""/>
<anuncio txt=""/>
<seccion txt=""/>
<subseccion txt=""/>
<organismo txt=""/>
<anuncio txt=""/>
</sumario>

en esto mediante XSLT:

<sumario>
<seccion id="">
<subseccion id="">
<organismo id="">
<anuncio>
</anuncio>
</organismo>
</subseccion>
</seccion>
</sumario>

agradecería cualquier ayuda que me pudiérais dar, muchas 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

Convertir estructura XML mediante XSLT

Publicado por Alejandro (227 intervenciones) el 06/07/2023 00:46:53
Para convertir la estructura XML según tus requerimientos utilizando XSLT, puedes utilizar las siguientes plantillas en tu archivo XSLT:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!-- Plantilla para el elemento "sumario" -->
<xsl:template match="sumario">
  <sumario>
    <!-- Aplicar las transformaciones a los elementos hijos de "sumario" -->
    <xsl:apply-templates/>
  </sumario>
</xsl:template>
 
<!-- Plantilla para el elemento "seccion" -->
<xsl:template match="seccion">
  <seccion>
    <xsl:attribute name="id">
      <!-- Obtener el atributo "txt" del elemento actual -->
      <xsl:value-of select="@txt"/>
    </xsl:attribute>
    <!-- Aplicar las transformaciones a los elementos hijos de "seccion" -->
    <xsl:apply-templates/>
  </seccion>
</xsl:template>
 
<!-- Plantilla para el elemento "subseccion" -->
<xsl:template match="subseccion">
  <subseccion>
    <xsl:attribute name="id">
      <!-- Obtener el atributo "txt" del elemento actual -->
      <xsl:value-of select="@txt"/>
    </xsl:attribute>
    <!-- Aplicar las transformaciones a los elementos hijos de "subseccion" -->
    <xsl:apply-templates/>
  </subseccion>
</xsl:template>
 
<!-- Plantilla para el elemento "organismo" -->
<xsl:template match="organismo">
  <organismo>
    <xsl:attribute name="id">
      <!-- Obtener el atributo "txt" del elemento actual -->
      <xsl:value-of select="@txt"/>
    </xsl:attribute>
    <!-- Aplicar las transformaciones a los elementos hijos de "organismo" -->
    <xsl:apply-templates/>
  </organismo>
</xsl:template>
 
<!-- Plantilla para el elemento "anuncio" -->
<xsl:template match="anuncio">
  <anuncio>
    <!-- Dejar el contenido del elemento "anuncio" vacío -->
  </anuncio>
</xsl:template>

Con estas plantillas, el archivo XSLT transformará la estructura XML según tus requerimientos. Las etiquetas "id" se crearán con el valor del atributo "txt" de cada elemento correspondiente. Los elementos "anuncio" se mantendrán sin cambios.

Recuerda aplicar la transformación XSLT a tu archivo XML utilizando un procesador XSLT compatible para obtener el resultado deseado.

Espero que esta solución te sea útil.
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