BizTalk 2009 XSLT and Attribute Value Templates
I'm trying to make use of attribute value type in a BizTalk XSL transformation to dynamically setting attribute or other element names.
Read more here: http://www.w3.org/TR/xslt#dt-attribute-value-template
The following code is an example of an XSL template to add an attribute optionally.
  <xsl:template name="AttributeOptional">
    <xsl:param name="value"/>
    <xsl:param name="attr"/>
    <xsl:if test="$value != ''">
      <xsl:attribute name="{$attr}">
        <xsl:value-of select="$value"/>
      </xsl:attribute>
    </xsl:if>
  </xsl:template>
Running this script in BizTalk results in "Exception from HRESULT: 0x80070002)"
An alternative I was thinking of was to call a msxsl:script function to do the same but i cannot get a handle on the XSL output context from within the function.
An ideas?
  <xsl:template name="AttributeOptional">
    <xsl:param name="value"/>
    <xsl:param name="attr"/>
    <xsl:if test="$value != ''">
      <xsl:attribute name="{$attr}">
        <xsl:value-of select="$value"/>
      </xsl:attribute>
    </xsl:if>
  </xsl:template>
Running this script in BizTalk results in "Exception from HRESULT: 0x80070002)"
Just me in "guess mode ":
There are at least two reasons there might be an error with this code:
 The supplied value of $attr is not a valid XML name (eg 12345 ).  
 The attribute is produced but the previously produced node is not an element (eg what is produced is <someElement> sometext then this attribute).  
