Foros del Web » Programación para mayores de 30 ;) » Programación General »

Transformación XML

Estas en el tema de Transformación XML en el foro de Programación General en Foros del Web. Hola a todos, acabo de darme de alta en el grupo y comienzo con una duda. Necesito generar un documento Xml a partir de otro ...
  #1 (permalink)  
Antiguo 31/01/2006, 01:10
 
Fecha de Ingreso: enero-2006
Mensajes: 1
Antigüedad: 18 años, 3 meses
Puntos: 0
Transformación XML

Hola a todos,
acabo de darme de alta en el grupo y comienzo con una duda.

Necesito generar un documento Xml a partir de otro documento Xml que no está muy bien definido.
El problema es que cada nodo de tipo "Layer" está formado por diferentes
nodo con nombre "Layer" también aunque no representan el mismo tipo de objetos.

La primera Layer que encuentro es la "padre" de todas las layers y esa en
concreto no me interesa.
Necesito distinguir las layers que "cuelgan" directamente de este nodo padre
para poder generar un Xml mejor "estructurado".
El xml origen es algo así:

<service name="layers">
<Layer queryable="0">
<Title>World</Title>
<Abstract />
<SRS>GENS:utm_30N</SRS>
<LatLonBoundingBox minx="717295098.500000" miny="364650938.000000"
maxx="736469337.500000" maxy="378346823.000000" />
<Visible />
---->>> Este nivel representa una base de datos
<Layer queryable="0">
<Title>Gis</Title>
<Abstract />
<Visible>True</Visible>
---->>> Este nivel representa un objeto de base de datos
<Layer queryable="0">
<Layer queryable="0">
<Name>swrefVcollectionVdatasetZgisVcollectionZdesa rrolloUrbano</Name>
<Title>Desarrollo Urbanístico</Title>
<Abstract />
<Visible>False</Visible>
</Layer>
---->>> Este nivel representa una agrupación de objetos de la base de datos pero que tiene los mismo atributos que la base de datos.
<Title>REFERENCIAS CARTOGRAFICAS</Title>
<Abstract />
<Visible>True</Visible>
---->>> Este nivel representa un objeto de base de datos que está en la
agrupacion anterior

<Layer queryable="0">
<Name>swrefVcollectionVdatasetZgisVcollectionZcall e</Name>
<Title>Calle</Title>
<Abstract />
<Visible>False</Visible>
</Layer>

El documento Xml resultante quiero que distinga los diferentes elementos del
documento cambiando el nombre del nodo.
Por ejemplo usar <base_datos>, <agrupacion> y dejar <layer> exclusivamente
para los objetos de tipo "layer".

Podría ser algo así:

<base_datos nombre="Gis">
<Layer queryable="0">
---> Para un objeto que no esta agrupado
<Name>swrefVcollectionVdatasetZgisVcollectionZcall e</Name>
<Title>Calle</Title>
<Abstract />
<Visible>False</Visible>
</Layer>
<agrupacion>
<Title>REFERENCIAS CARTOGRAFICAS</Title>
<Abstract />
<Visible>True</Visible>
<Layer queryable="0">
<Name>swrefVcollectionVdatasetZgisVcollectionZcall e</Name>
<Title>Calle</Title>
<Abstract />
<Visible>False</Visible>
</Layer>
....
</agrupacion>

</base_datos>

El problema es que no se cómo puedo "detectar" el nivel de profundidad en el
que me encuentro ya que ésto es lo que me diferencia una base de datos de
una agrupación. Los "objetos" al tener campos distintos si puedo
distinguirlos. Probé a usar xsl:variable pero tras darde de tortas con el
código me di cuenta que realmente son constantes y no me ayuda esto mucho.

Acabo de empezar con el XSL y cualquier ayuda me será útil.

Saludos y gracias de antemano.
Mario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:26.