2009-12-22 33 views
5

Estoy haciendo una lista de tickers a html a través de xslt y me gustaría que la lista sea coma por coma. Suponiendo que iba a usar xsl: for-each ...Cómo renderizo una lista delimitada por comas usando xsl: for-each

<xsl:for-each select="/Tickers/Ticker"> 
    <xsl:value-of select="TickerSymbol"/>, 
</xsl:for-each> 

Cuál es la mejor manera de deshacerse de la coma final? ¿Hay algo mejor que xsl: for-each?

Respuesta

15
<xsl:for-each select="/Tickers/Ticker"> 
    <xsl:if test="position() > 1">, </xsl:if> 
    <xsl:value-of select="TickerSymbol"/> 
</xsl:for-each> 
+0

no de hacer k ahora si pretendía codificar el símbolo mayor que o no, pero usando .Net, la sintaxis correcta era: , – MadMax1138

+0

¡Solución elegante! – Scadge

6

En XSLT 2.0 que podría hacerlo (sin fines de cada) utilizando el string-join function:

<xsl:value-of select="string-join(/Tickers/Ticker, ',')"/> 
+0

Gracias, actualmente estoy usando .Net 2.0, por lo que sé, xslt 2.0 no es una opción. – MadMax1138

+0

Puede usar Saxon .NET http://sourceforge.net/projects/saxondotnet/ –

2

En XSLT 1.0, otra alternativa al uso de xsl: for-each haría puede usar xsl: apply-templates

<xsl:template match="/"> 

    <!-- Output first element without a preceding comma --> 
    <xsl:apply-templates select="/Tickers/Ticker[position()=1]" /> 

    <!-- Output subsequent elements with a preceding comma --> 
    <xsl:apply-templates select="/Tickers/Ticker[position()&gt;1]"> 
     <xsl:with-param name="separator">,</xsl:with-param> 
    </xsl:apply-templates> 

</xsl:template> 

<xsl:template match="Ticker"> 
    <xsl:param name="separator" /> 
    <xsl:value-of select="$separator" /><xsl:value-of select="TickerSymbol" /> 
</xsl:template> 
1

sé que dijo XSL 2.0 no es una opción y que ha sido una lon se le pidió tiempo g ya que la cuestión, sino para todos los que buscan un posibilidad para hacer lo que quería lograr:

hay una manera más fácil en XSL 2.0 o superior

<xsl:value-of separator=", " select="/Tickers/Ticker/TickerSymbol" /> 

Esto permitirá la lectura de su/tickers elementos/Ticker y de inserción '' como separador donde sea necesario

Si hay una manera más fácil de hacer esto estoy deseando para el asesoramiento

Saludos Kevin

Cuestiones relacionadas