Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml btm映射异常-无法将属性和命名空间节点添加到父元素_Xml_Xslt_Biztalk Mapper - Fatal编程技术网

Xml btm映射异常-无法将属性和命名空间节点添加到父元素

Xml btm映射异常-无法将属性和命名空间节点添加到父元素,xml,xslt,biztalk-mapper,Xml,Xslt,Biztalk Mapper,我有btm映射文件,我做了如下自定义体映射,但在转换时xslt给出了以下错误- 无法将属性和命名空间节点添加到父元素 在已经添加文本、注释、pi或子元素节点之后 xslt映射- <DemoParent> <IdRef> <xsl:attribute name="identifier"> <xsl:value-of select="header/msgHeader/Number/

我有btm映射文件,我做了如下自定义体映射,但在转换时xslt给出了以下错误-

无法将属性和命名空间节点添加到父元素 在已经添加文本、注释、pi或子元素节点之后

xslt映射-

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

是为自定义映射添加的

规则是,向元素添加属性的指令必须出现在向同一元素添加子节点的指令之前/之上。错误消息以执行顺序的形式出现,这是一种礼貌的虚构


在您编辑的文章中,我们可以看到,对于DemoParent,创建IdRef子元素的指令出现在创建name属性的xsl:attribute指令的上方;需要将其移动,以便将属性放在第一位。

是否应该放在第一位?您认为要将name属性添加到哪个元素?如果是DemoParent,则需要将xsl:属性移到IdRef之前。或者像这样直接添加。您向我们展示的代码有问题,IdRef结束标记不能紧跟DemoParent开始标记。另外,创建一个标识符属性,然后创建另一个标识符属性,有效地清除第一个标识符属性的值,这似乎是毫无意义的。对不起,这里的输入错误被正确更新了``是为自定义映射添加的谢谢,但我不懂这里的术语说明。您能用更改代码片段详细说明吗?谢谢,我对这个评论感到有点困惑,因为我不知道如何在不阅读指令的情况下学习编写XSLT代码。你是怎么学会这门语言的而没有遇到这个学期的?所有被评估以产生结果的XSLT元素都是指令:例如xsl:element、xsl:attribute、xsl:for each、xsl:if;但不是像xsl:template和xsl:strip space这样的声明。我只是支持其中一个问题,没有关于xslt lang的确切信息:顺便说一下,非常感谢您的解释,这很有帮助。