BizTalk 2009 XSLT and Attribute Value Templates

1

I'm trying to make use of the attribute value type in a BizTalk XSL transformation to dynamically set attributes or other element names.

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>

Problem:

Running this script in BizTalk causes the following exception:

"Exception from HRESULT: 0x80070002)"

One alternative I thought about was to call a msxsl:script function to do the same thing, but I can not handle the XSL output context from inside the function.

An ideas?

xslt
biztalk
attributes
asked on Stack Overflow May 28, 2010 by amok • edited Nov 4, 2018 by Rene Knop

1 Answer

1
  <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:

  1. The supplied value of $attr is not a valid XML name (e.g. 12345).

  2. The attribute is produced but the previously produced node is not an element (e.g. what is produced is <someElement> sometext then this attribute).

answered on Stack Overflow May 28, 2010 by Dimitre Novatchev

User contributions licensed under CC BY-SA 3.0