RE: [xsl] Transforming elements into attributes

Subject: RE: [xsl] Transforming elements into attributes
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Fri, 30 Apr 2004 10:29:47 +0300
Hi,

> Is there a nice 'readable' way to transform elements into attributes?
> 
> Currently, I need to copy and paste for each one.
> 
> XSL:
> 
>   <xsl:template match="form">
>     <form>
>       <xsl:if test="@name">

You probably meant to say to test

  <xsl:if test="name">

as you example source has no attributes.

>         <xsl:attribute name="name">
>           <xsl:value-of select="name"/>
>         </xsl:attribute>
>       </xsl:if>
>       <xsl:if test="@action">
>         <xsl:attribute name="action">
>           <xsl:value-of select="action"/>
>         </xsl:attribute>
>       </xsl:if>
>       <xsl:if test="@method">
>         <xsl:attribute name="method">
>           <xsl:value-of select="method"/>
>         </xsl:attribute>
>       </xsl:if>
>       <xsl:apply-templates/>
>     </form>
>   </xsl:template>

  <xsl:template match="form">
    <xsl:copy>
      <xsl:for-each select="name | action | method">
       <xsl:attribute name="{name()}">
         <xsl:value-of select="."/>
       </xsl:attribute>
     </xsl:for-each>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

Cheers,

Jarno

Current Thread