RE: last attribute ?

Subject: RE: last attribute ?
From: "Jarno Elovirta" <jarno@xxxxxxxxxxxxxx>
Date: Tue, 26 Sep 2000 15:36:50 +0300
> 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


Current Thread