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 follo开发者_运维知识库wing 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?
<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 (e.g.12345
).The attribute is produced but the previously produced node is not an element (e.g. what is produced is
<someElement> sometext
then this attribute).
精彩评论