This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: last attribute ?
- To: <xsl-list at mulberrytech dot com>
- Subject: RE: last attribute ?
- From: "Jarno Elovirta" <jarno at codeonline dot com>
- Date: Tue, 26 Sep 2000 15:36:50 +0300
- Reply-To: xsl-list at mulberrytech dot com
> In source there is element:
> <test attrib1="test1" attrib2="test2" attrib3="test3">element</test>
>
> and I want attributes as:
>
> <testresult attributes="attrib1:test1, attrib2:test2,
> attrib3:test3>element</testresult>
>
> Ok, my problem is that ',' comma there. I need to separate attributes from
> each others using ',' but after last attribute (in this example
> attrib3:test3) there should be no ','. And these attributes are
> optional, so
> there can be more attributes (e.g. attrib4=test4) and there are no any
> specific order (attrib1 can come after attrib3).
>
> so how do I know if there is attributes left to handle in current element?
Try
[c:\temp]type test.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<test attrib1="test1" attrib2="test2" attrib3="test3">element</test>
[c:\temp]type test.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="test">
<testresult>
<xsl:attribute name="attributes">
<xsl:apply-templates select="@*">
<xsl:sort select="name()" />
</xsl:apply-templates>
</xsl:attribute>
<xsl:value-of select="." />
</testresult>
</xsl:template>
<xsl:template match="test/@*">
<xsl:value-of select="name()" />
<xsl:text>:</xsl:text>
<xsl:value-of select="." />
<xsl:if test="not(position() = last())">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
[c:\temp]saxon test.xml test.xsl
<?xml version="1.0" encoding="utf-8"?><testresult attributes="attrib1:test1,
attrib2:test2, attrib3:test3">element</testresult>
Cheers,
Jarno
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list