2016-01-06 4 views
1

У меня есть Xml, как показано ниже:Определить положение элементов в XSL: для-каждого

<data> 
    <record id="1"/> 
    <record id="2"/> 
    <record id="3"/> 
    <record id="4"/> 
    <record id="5"/> 
    <record id="6"/> 
</data> 

Я хочу напечатать этот XML, как

**TRIM("1"-"2"-"3"-"4"-"5"-"6")** 

Я использую простой XSL, как показано ниже

<xsl:for-each select="descendant-or-self::*/record"> 
    <xsl:text>TRIM("</xsl:text> 
    <xsl:value-of select="@id"/> 
    <xsl:text>"-"</xsl:text> 
    <xsl:text>)</xsl:text> 
</xsl:for-each> 

первый элемент требует только <xsl:text>TRIM("</xsl:text> и последний пункт требует <xsl:text>)</xsl:text>. Как достичь этого, чтобы получить результат TRIM («1» - «2» - «3» - «4» - «5» - «6»)

+1

Возможного дубликат [Concat строки XSLT, удалить последнюю запятую] (http://stackoverflow.com/questions/798269/xslt-concat-string-remove-last-comma) –

ответ

0

У меня есть ответ. это

<xsl:for-each select="descendant-or-self::*/record"> 
    <xsl:if test="position() = 1"> 
     <xsl:text>TRIM("</xsl:text> 
    </xsl:if> 
    <xsl:value-of select="@id"/> 
    <xsl:text>"-"</xsl:text> 
    <xsl:if test="position() = last()"> 
     <xsl:text>)</xsl:text> 
    </xsl:if> 
</xsl:for-each> 
Смежные вопросы