Tengo una cadena de entrada que tiene valores de csv. Ej., 1,2,3 Necesitaría separar cada valor y asignarlo al nodo objetivo en cada bucle.Secuencia de bits separados por comas XSLT para cada nodo
Obtuve esta plantilla debajo que divide la cadena de entrada en función del delimitador. ¿Cómo puedo asignar cada uno de los valores delimitados al elemento de destino en cada bucle?
<xsl:template name="output-tokens">
<xsl:param name="list"/>
<xsl:param name="delimiter"/>
<xsl:variable name="newlist">
<xsl:choose>
<xsl:when test="contains($list, $delimiter)">
<xsl:value-of select="normalize-space($list)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(normalize-space($list), $delimiter)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="first" select="substring-before($newlist, $delimiter)"/>
<xsl:variable name="remaining"
select="substring-after($newlist, $delimiter)"/>
<xsl:variable name="count" select="position()"/>
<num>
<xsl:value-of select="$first"/>
</num>
<xsl:if test="$remaining">
<xsl:call-template name="output-tokens">
<xsl:with-param name="list" select="$remaining"/>
<xsl:with-param name="delimiter">
<xsl:value-of select="$delimiter"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
entrada XML:
<out1:AvailableDates>
<out1:AvailableDate>15/12/2011,16/12/2011,19/12/2011,20/12/2011,21/12/2011</out1:AvailableDate>
</out1:AvailableDates>
Resultados esperados:
<tns:AvailableDates>
<tns:AvailableDate>15/12/2011</tns:AvailableDate>
<tns:AvailableDate>16/12/2011</tns:AvailableDate>
<tns:AvailableDate>120/12/2011</tns:AvailableDate>
</tns:AvailableDates>
Muchas gracias. Excelente – Arun
@Arun: estoy contento de que mi respuesta haya sido útil. ¿Podría marcar la respuesta como aceptada (haga clic en la marca de verificación junto a la respuesta)? Esta es la manera oficialmente establecida de expresar gratitud en SO. –
Definitivamente. En mi XSL obtengo el mensaje: y son los únicos elementos permitidos en el XSL. Cuando uso –
Arun