You are right, xsl:attribute-set would be useful (and we'll have it
sometime), but your example may be handled in very simple way:
<xsl:template match='image'>
<img src='{url}' alt='{name}' width='{width}' height='{height}'
title='{name}' border='0'/>
</xsl:template>
HTH
Pavel
Stephen Welker wrote:
> Sablotron 0.50 - great software so far.
>
> I would like to see xsl:attribute-set being implemented in the next
> release.
>
> Consider a typical XML fragment:
>
> <image>
> <url>/icons/home.gif</url>
> <width>20</width>
> <height>22</height>
> </image>
>
> Now to generate HTML from this XML via XSL would be (via sabcmd 0.50):
>
> <xsl:template match="image">
> <xsl:text disable-output-escaping="yes"><IMG SRC="</xsl:text>
> <xsl:value-of select="url"/>
> <xsl:text disable-output-escaping="yes">" ALT="</xsl:text>
> <xsl:value-of select="name"/>
> <xsl:text disable-output-escaping="yes">" WIDTH="</xsl:text>
> <xsl:value-of select="width"/>
> <xsl:text disable-output-escaping="yes">" HEIGHT="</xsl:text>
> <xsl:value-of select="height"/>
> <xsl:text disable-output-escaping="yes">" TITLE="</xsl:text>
> <xsl:value-of select="name"/>
> <xsl:text disable-output-escaping="yes">" BORDER="0"></xsl:text>
> </xsl:template>
>
> However if the xsl:attribute-set element was available, the code would
> become:
>
> <xsl:template match="image">
> <xsl:element name="IMG" use-attribute-sets="image-attributes"/>
> </xsl:template>
>
> <xsl:attribute-set name="image-attributes">
> <xsl:attribute name="URL">
> <xsl:value-of select="url"/>
> </xsl:attribute>
> <xsl:attribute name="ALT">
> <xsl:value-of select="name"/>
> </xsl:attribute>
> <xsl:attribute name="WIDTH">
> <xsl:value-of select="width"/>
> </xsl:attribute>
> <xsl:attribute name="HEIGHT">
> <xsl:value-of select="height"/>
> </xsl:attribute>
> <xsl:attribute name="TITLE">
> <xsl:value-of select="name"/>
> </xsl:attribute>
> <xsl:attribute name="BORDER">0</xsl:attribute>
> </xsl:attribute-set>
>
> I personally think with the xsl:attibutes-set being available the XSL
> would be clearer to read and easier to maintain.
>
> Thankyou in advance.
>
> BTW: the examples on the web site are getting a little out of date ;-(
>
> for example in leftbar.xsl top.xsl there is the following code fragment:
>
> <xsl:text><A HREF="</xsl:text>
> <xsl:value-of select="url" />
> <xsl:text>"></xsl:text>
> <xsl:value-of select="name" />
> <xsl:text></A></xsl:text>
>
> which could be updated to:
>
> <A>
> <xsl:attribute name="HREF">
> <xsl:value-of select="url"/>
> </xsl:attribute>
> <xsl:value-of select="name"/>
> </A>
>
> Which is clearer to read and more obvious as to the intent.
>
> I only bring this up because as I started to use XML/XSL/Sablotron I
> used your examples as commercial quality code to base other work on. I
> just wish to give beginners a good start with such a powerfull tool such
> as Sablotron.
>
> Keep up the good work.
--
Pavel Hlavnicka
Ginger Alliance Ltd.
Prague; Czech Republic