Page 1 of 1

tricky transformation

Posted: Tue Mar 15, 2005 11:37 am
by Cinimod
Hi,

I need an idea how to write a transformation for the following xml Dokument

<names>
<name>Jeffrey</name>
<name>George</name>
<name>Mike</name>
</name>

so that, when I use fop, the following line is created.

Jeffrey, George, Mike.

My problem is, that behind every name a comma is set, but behind the last one a dot.

I tried to do it like this:

<xsl:template match="names">
<fop:block>
<xsl:apply-templates/>
</fop:block>
</xsl:template>

<xsl:template match="name">
<xsl:value-of select="."/>,
</xsl:template>


but as you can see, this version sets a comma after every name, even after the last one.

Thanks a lot for any ideas, how to solve this problem.

Posted: Tue Mar 15, 2005 1:15 pm
by george
Hi,

You can check if there is a following sibling name element and in that case output comma, otherwise output the dot.
Something like:

Code: Select all


<xsl:template match="name">
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test="following-sibling::name">
<xsl:text>,</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>.</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

Best Regards,
George