Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/03/2013, 03:33
ODIOelSEA
 
Fecha de Ingreso: octubre-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Adaptacion de un XML con XSL

Buenas cuando parecia resuelto nos hemos dado cuenta de que estaba mal..

tenemos el XML
<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">TEXTO OTRO 1
<BT level="2">TEXTO OTRO 2
<BT level="3">TEXTO OTRO 3
<BT level="4">TEXTO OTRO 4

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

el cual tiene que aparecer..
TEXTO HIJO: TEXTO PADRE 4, TEXTO PADRE 3, TEXTO PADRE 2, TEXTO PADRE 1 |
es decir, totalmente al reves!!!

Este es el xsl que tenemos...

Código HTML:
 <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> 
Cada vez se complica mas la cosa jajajaja

Gracias!!