XSL - Ayuda con XSL

 
Vista:

Ayuda con XSL

Publicado por 4D10S (2 intervenciones) el 07/03/2013 08:48:51
Buenas,

Tengo un ligero problema con un XML y un XSL. El caso es que no se como hacer la transformación para que quede como lo necesitamos.

Este es nuestro XML

<CONCEPTO>
<DESCRIPCION>TEXTO HIJO</DESCRIPCION>
<BT level="1">TEXTO PADRE 1
<BT level="2">TEXTO PADRE 2
<BT level="3">TEXTO PADRE 3
<BT level="4">TEXTO PADRE 4

</BT>
</BT>
</BT>
</BT>
</CONCEPTO>

Y el resultado que estamos intentando es... TEXTO HIJO: TEXTO PADRE 1, TEXTO PADRE 2, TEXTO PADRE 3, TEXTO PADRE 4 |

Como se observa necesito que los nodos BT se separen con comas pero lo que me muestra ahora mismo TEXTO HIJO: TEXTO PADRE 1 TEXTO PADRE 2 TEXTO PADRE 3 TEXTO PADRE 4 | ... vamos sin comas...

Como tendria que "recorrer" esos nodos aninados para conseguir lo que quiero???

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

Ayuda con XSL

Publicado por Jose Manuel (3 intervenciones) el 08/03/2013 20:26:44
Hola:

¿Qué XSL usas actualmente? Supongo que recorrer los nodos ya lo haces porque aparece la información, aunque no de la forma en que quieres.

Si nos muestras esa información, será más fácil echarte una mano con ese tema.

Saludos,

José Manuel
===============================
http://www.orbisapientia.com
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

Ayuda con XSL

Publicado por 4D10S (2 intervenciones) el 12/03/2013 14:06:35
Buenas,

Si perdona disculpa. Ahora os pongo el xsl aunque se ha complicado un poco mas el XSL y la manera de mostrar en el txt

El XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<RAMA>
<CONCEPTO>
<DESCRIPCION>TEXTO HIJO</DESCRIPCION>
<BT level="1">TEXTO PADRE 1
<BT level="2">TEXTO PADRE 2
<BT level="3">TEXTO PADRE 3
<BT level="4">TEXTO PADRE 4
 
</BT>
</BT>
</BT>
</BT>
 
<BT level="1">OTRO PADRE 1
<BT level="2">OTRO PADRE 2
<BT level="3">OTRO PADRE 3
<BT level="4">OTRO PADRE 4
 
</BT>
</BT>
</BT>
</BT>
</CONCEPTO>
</RAMA>

Y mostrar se tiene que mostrar...
TEXTO HIJO: TEXTO PADRE 4, TEXTO PADRE 3, TEXTO PADRE 2, TEXTO PADRE 1 |
TEXTO HIJO: OTRO PADRE 4, OTRO PADRE 3, OTRO PADRE 2, OTRO PADRE 1 |

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
<xsl:template match="/">
		<xsl:for-each select="RAMA/CONCEPTO">
			<xsl:if test="DESCRIPCION">
				<xsl:param name="valorDescriptor"><xsl:value-of select="DESCRIPCION"/>:</xsl:param>
				<xsl:choose>
					<xsl:when test="BT">
						<xsl:apply-templates select="BT"><xsl:with-param name="valor" select="$valorDescriptor"/></xsl:apply-templates>
					</xsl:when>
					<xsl:otherwise>
						<xsl:choose>
							<xsl:when test="RT"/>
							<xsl:otherwise><xsl:text>
</xsl:text><xsl:value-of select="DESCRIPCION"/>:</xsl:otherwise>
						</xsl:choose>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:if>
			<xsl:if test="UF">
				<xsl:param name="valorUF"><xsl:value-of select="UF"/>:</xsl:param>
				<xsl:apply-templates select="BT"><xsl:with-param name="valor" select="$valorUF"/></xsl:apply-templates>
			</xsl:if>
			<xsl:if test="RT">
				<xsl:param name="valorRT"><xsl:value-of select="RT"/>:</xsl:param>
				<xsl:apply-templates select="BT"><xsl:with-param name="valor" select="$valorRT"/></xsl:apply-templates>
			</xsl:if>
		</xsl:for-each>
	</xsl:template>
 
      <xsl:template match="BT">
              <xsl:param name="valor"/>
              <xsl:if test="@level =1"><xsl:text>
</xsl:text><separator/><xsl:value-of select="$valor"/>
              </xsl:if>
              <xsl:value-of select="normalize-space(text())"/>
              <xsl:choose><xsl:when test="BT">,<xsl:apply-templates select="BT"/></xsl:when>
              <xsl:otherwise>|</xsl:otherwise></xsl:choose>
      </xsl:template>


Actualmente ese xsl lo muestra bien pero al reves es decir, como en mi primer mensaje.

Gracias.
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