Re: [xsl] concatenate multiple attribute values and assign it to another attribute

Subject: Re: [xsl] concatenate multiple attribute values and assign it to another attribute
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Thu, 29 Mar 2007 23:06:09 +0200
Abel Braaksma wrote:

<xsl:template match="@att1[last()] | @att2[last()]"> <xsl:value-of select="." /> </xsl:template>

Oops, I should correct myself here: this won't work of course, it is always true... sorry 'bout that. Here's another go, that is easier, it will output what you want (it would've been a one-liner in xslt 2.0):


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:template match="/">
<test>
<xsl:attribute name="att1">
<xsl:apply-templates select="//test" >
<xsl:with-param name="att" select="'att1'" />
</xsl:apply-templates>
</xsl:attribute>
<xsl:attribute name="att2">
<xsl:apply-templates select="//test" >
<xsl:with-param name="att" select="'att2'" />
</xsl:apply-templates>
</xsl:attribute>
</test>
</xsl:template>
<xsl:template match="test[last()]">
<xsl:param name="att" />
<xsl:value-of select="@*[local-name() = $att]"/>
</xsl:template>
<xsl:template match="test">
<xsl:param name="att" />
<xsl:value-of select="@*[local-name() = $att]"/>
<xsl:text>,</xsl:text>
</xsl:template>


</xsl:stylesheet>

Current Thread