Template that adds a given attribute and value

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Hvid Hat

    Template that adds a given attribute and value

    Hi

    I've been messing around with adding attributes to certain nodes. I've looked
    at FAQ at http://www.dpawson.co.uk/ without finding what I'm looking for.

    Is it possible to have a template that is called with a node, an attribute
    name and an attribute value. The template would add the the given attribute
    name with the attribute value to the given note. Is this possible with XSLT -
    and if so, where can I get it? :-)

  • Martin Honnen

    #2
    Re: Template that adds a given attribute and value

    Hvid Hat wrote:
    I've been messing around with adding attributes to certain nodes. I've looked
    at FAQ at http://www.dpawson.co.uk/ without finding what I'm looking for.
    >
    Is it possible to have a template that is called with a node, an attribute
    name and an attribute value. The template would add the the given attribute
    name with the attribute value to the given note. Is this possible with XSLT -
    and if so, where can I get it? :-)
    You have already posted much of the solution:
    <xsl:template name="add-attribute">
    <xsl:param name="el"/>
    <xsl:param name="att-name"/>
    <xsl:param name="att-value"/>
    <xsl:for-each select="$el">
    <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:attribut e name="{$att-name}">
    <xsl:value-of select="$att-value"/>
    </xsl:attribute>
    <xsl:copy-of select="node()"/>
    </xsl:copy>
    </xsl:for-each>
    </xsl:template>

    Call as

    <xsl:call-template name="add-attribute">
    <xsl:with-param name="el" select="foo"/>
    <xsl:with-param name="att-name" select="'bar'"/>
    <xsl:with-param name="att-value" select="'baz'"/>
    </xsl:call-template>
    --

    Martin Honnen

    Comment

    • Hvid Hat

      #3
      Re: Template that adds a given attribute and value

      On 07-06-2008 15:05:54, Martin Honnen wrote:
      You have already posted much of the solution:
      <xsl:template name="add-attribute">
      <xsl:param name="el"/>
      <xsl:param name="att-name"/>
      <xsl:param name="att-value"/>
      <xsl:for-each select="$el">
      <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:attribut e name="{$att-name}">
      <xsl:value-of select="$att-value"/>
      </xsl:attribute>
      <xsl:copy-of select="node()"/>
      </xsl:copy>
      </xsl:for-each>
      </xsl:template>
      >
      Call as
      >
      <xsl:call-template name="add-attribute">
      <xsl:with-param name="el" select="foo"/>
      <xsl:with-param name="att-name" select="'bar'"/>
      <xsl:with-param name="att-value" select="'baz'"/>
      </xsl:call-template>
      Perfect! Thanks, Martin.

      Comment

      Working...