tricky transformation

Here should go questions about transforming XML with XSLT and FOP.
Cinimod
Posts: 3

tricky transformation

Tue Mar 15, 2005 11:37 am

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.
george
Site Admin
Posts: 2100

Tue Mar 15, 2005 1:15 pm

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

Return to “XSLT and FOP”

Who is online

Users browsing this forum: No registered users and 0 guests