BizTalk 2009 XSLT и шаблоны значений атрибутов

Я пытаюсь использовать тип значение атрибута в XSL-преобразовании BizTalk для динамической установки атрибутов или других имен элементов.

Следующий код является примером шаблона XSL для необязательного добавления атрибута:

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

Проблема:

Запуск этого сценария в BizTalk вызывает следующее исключение:

«Исключение из HRESULT: 0x80070002)»

Одна альтернатива, о которой я подумал, заключалась в том, чтобы вызвать функцию msxsl:script, чтобы сделать то же самое, но я не могу обрабатывать выходной контекст XSL изнутри функции.

Идеи?


person amok    schedule 28.05.2010    source источник
comment
Пожалуйста, предоставьте полную (но минимально возможную) таблицу стилей и полный XML-документ, чтобы при применении таблицы стилей к документу возникала ошибка. Прямо сейчас у нас нет вашего полного кода, и мы можем только предположить, что может быть не так в других частях вашего XSLT-кода.   -  person Dimitre Novatchev    schedule 28.05.2010
comment
Вам не нужно избегать кода. Просто скопируйте и вставьте его как есть, затем выберите код и нажмите кнопку «Код» (та, что с единицами и нулями на ее значке).   -  person Dimitre Novatchev    schedule 28.05.2010
comment
См. Мой ответ по двум вероятным причинам этой проблемы.   -  person Dimitre Novatchev    schedule 28.05.2010


Ответы (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>

Выполнение этого сценария в BizTalk приводит к появлению «Исключение из HRESULT: 0x80070002)»

Только я в "режиме предположений":

Существует как минимум две причины, по которым может возникнуть ошибка с этим кодом:

  1. Предоставленное значение $attr не является допустимым именем XML (например, 12345).

  2. Атрибут создается, но ранее созданный узел не является элементом (например, создается <someElement> sometext, а затем этот атрибут).

person Dimitre Novatchev    schedule 28.05.2010
comment
Димитр, похоже, я неправильно определил основную причину возникшей у меня проблемы. Я собираюсь пройти еще несколько тестов и свяжусь с вами. Мои извинения! - person amok; 28.05.2010