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!!