【问题标题】:Syntax error: X cannot be a child of the 'xsl:element' element语法错误:X 不能是“xsl:element”元素的子元素
【发布时间】:2019-03-16 18:10:39
【问题描述】:

我正在使用 Azure 集成工具(以前是 BizTalk 映射器)来翻译入站 856。首先,我只是想获得一个工作地图并逐字复制 BizTalk 2009 中的 Pro Mapping 一书中的脚本由 Jim Dawson 撰写,我正在使用他的示例输入和输出。我遇到以下错误输出

'xsl:element' 不能是 'xsl:element' 元素的子元素。"

这是我的 XSLT 脚本:

<xsl:variable name="RailRoadCar" select="concat(//s0:TD3/TD302,//s0:TD3/TD303)"/>
<xsl:variable name="OrderNum" select="//s0:PRF/PRF01"/>

<xsl:for-each select="//s0:HLLoop1[s0:HL/HL03='I']/s0:MAN[not(MAN02=preceding::s0:MAN/MAN02)]">
    <xsl:variable name="ItemID" select="MAN02"/>
    <xsl:element name="s0:ItemLoop">
        <xsl:element name="ItemID"><xsl:value-of select="$ItemID"/></xsl:element>
        <xsl:element name="OrderNum"><xsl:value-of select="OrderNum"/></xsl:element>
        <xsl:element name="RailRoadCar"><xsl:value-of select="RailRoadCar"/></xsl:element>

        <xsl:for-each select="//s0:HLLoop1[s0:HL/HL03='I' and s0:MAN/MAN02=$ItemID]">
            <xsl:variable name="HLPack" select="s0:HL/HL02"/>
            <xsl:element name="PackLoop">

                <xsl:elemment name="PackID">
                    <xsl:value-of select="//s0:HLLoop1[s0:HL/HL01=$HLPack and s0:HL/HL03='P']/s0:MAN/MAN02"/>
                </xsl:elemment>

            </xsl:element>
        </xsl:for-each>

    </xsl:element>
</xsl:for-each>

我也尝试在 PackLoop 元素中放置一个命名空间限定符,如下所示:,但这会导致相同的错误。有人可以帮助这里的语法吗?

谢谢, 内森

【问题讨论】:

    标签: xml azure xslt biztalk edi


    【解决方案1】:

    为什么不直接使用元素的名称?

    <xsl:variable name="RailRoadCar" select="concat(//s0:TD3/TD302,//s0:TD3/TD303)"/>
    <xsl:variable name="OrderNum" select="//s0:PRF/PRF01"/>
    
    <xsl:for-each select="//s0:HLLoop1[s0:HL/HL03='I']/s0:MAN[not(MAN02=preceding::s0:MAN/MAN02)]">
        <xsl:variable name="ItemID" select="MAN02"/>
        <s0:ItemLoop>
            <ItemID><xsl:value-of select="$ItemID"/></ItemID>
            <OrderNum><xsl:value-of select="OrderNum"/></OrderNum>
            <RailRoadCar><xsl:value-of select="RailRoadCar"/></RailRoadCar>
    
            <xsl:for-each select="//s0:HLLoop1[s0:HL/HL03='I' and s0:MAN/MAN02=$ItemID]">
                <xsl:variable name="HLPack" select="s0:HL/HL02"/>
                <PackLoop>
    
                    <PackID>
                        <xsl:value-of select="//s0:HLLoop1[s0:HL/HL01=$HLPack and s0:HL/HL03='P']/s0:MAN/MAN02"/>
                    </PackID>
    
                </PackLoop>
            </xsl:for-each>
    
        </s0:ItemLoop>
    </xsl:for-each>
    

    【讨论】:

      【解决方案2】:

      长答案

      X 不能是 'xsl:element' 元素的子元素

      仔细查看 X,看看它是 xsl:element 的子代是否有意义。

      简答

      xsl:elemment 更改为xsl:element

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        相关资源
        最近更新 更多