Исключение отображения btm - узлы атрибута и пространства имен нельзя добавить к родительскому элементу

Я имею btm mapping file я сделал custom body mapping как ниже, но во время transformation xslt gives below error -

Узлы атрибута и пространства имен не могут быть добавлены к родительскому элементу после того, как узел текста, комментария, pi или узла подэлемента уже был добавлен

xslt mapping -

    <DemoParent>
 <IdRef>
                <xsl:attribute name="identifier">
                  <xsl:value-of select="header/msgHeader/Number/text()" />
                </xsl:attribute>
                <xsl:attribute name="identifier">
                  <xsl:value-of select="header/msgHeader/customerNumber/text()" />
                </xsl:attribute>

              </IdRef>
              <xsl:attribute name="name">
                <xsl:value-of select="$var:v12" />
              </xsl:attribute>
              <xsl:element name="TEST">
            <xsl:copy-of select="//*[local-name()='DEMO1' and namespace-uri()='']/*[local-name()='header' and namespace-uri()='']/*[local-name()='msgHeader' and namespace-uri()='']/*[local-name()='sale' and namespace-uri()='']/*" />
     </xsl:element>
            </DemoParent>

<xsl:element name="TEST"> добавлен для пользовательского сопоставления

1 ответ

Правило состоит в том, что инструкции, которые добавляют атрибуты к элементу, должны появляться перед / над инструкциями, которые добавляют дочерние узлы к тому же элементу. (Сообщение об ошибке говорит о порядке исполнения, что является вежливым вымыслом).

В вашем отредактированном посте мы видим, что для DemoParent инструкция по созданию дочернего элемента IdRef появляется над инструкцией xsl:attribute, которая создает атрибут name; его нужно переместить, чтобы атрибут был первым.

Другие вопросы по тегам