То, как я представляю запятую, разграничило список с помощью xsl:for-каждого

Я представляю список тикеров к HTML через xslt, и я хотел бы за список быть разграниченной запятой. Принятие я собирался использовать xsl:for-каждого...

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

Что лучший способ состоит в том, чтобы избавиться от запаздывающей запятой? Есть ли что-то лучше, чем xsl:for-каждый?

6
задан MadMax1138 22 December 2009 в 17:18
поделиться

3 ответа

<xsl:for-each select="/Tickers/Ticker">
    <xsl:if test="position() > 1">, </xsl:if>
    <xsl:value-of select="TickerSymbol"/>
</xsl:for-each>
18
ответ дан 8 December 2019 в 03:53
поделиться

В XSLT 1.0, другой альтернативой использованию xsl:for-each было бы использование 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>
2
ответ дан 8 December 2019 в 03:53
поделиться

В XSLT 2. 0 можно было сделать ( без for-each), используя функцию , соединяющую строки :

<xsl:value-of  select="string-join(/Tickers/Ticker, ',')"/>  
6
ответ дан 8 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: