首页 > 解决方案 > 脚本 functoid 的输入数量与 xsl:call 模板预期的输入数量不匹配

问题描述

我正在开发一个 BizTalk 项目,我需要使用 BizTalk 映射和 XSLT 获取位于不同节点中的许多日期之间的最短日期。

我已经搜索了一些示例,我发现了这个:How to find minimum date from different xml date nodes using xslt这似乎与我的问题有关。

所以我修改了代码并将其放在脚本类型“内联 XSLT 调用模板”下的脚本 functoid 中,然后我构建了我的项目,它返回了这个错误“脚本 functoid 的输入数量与预期的输入数量不匹配通过 xsl:call 模板。”

由于我是 XSLT 和 BizTalk 的新手,欢迎提供任何帮助。

我已经移动了 Input 节点和 functoid 之间的链接,但得到了同样的错误。

这是 XSLT 内联脚本

<xsl:template name="ExtractMinStartDate">
     <xsl:for-each select="/*[local-name()='Employee']/*[local-name()='Contracts']/*[local-name()='Contract']/*[local-name()='EmployementStartDate']">
         <xsl:sort select="substring(Date,1,4)" data-type="string" order="ascending"/>
         <xsl:sort select="substring(Date,6,2)" data-type="string" order="ascending"/>
         <xsl:sort select="substring(Date,9,2)" data-type="string" order="ascending"/>
              <xsl:if test="position()=1">
                   <xsl:value-of select="EmployementStartDate" />  
              </xsl:if>
     </xsl:for-each>
</xsl:template>

这是输入中的xml

<Employee xmlns="http://Securitas.ESB.HR.EmployeeUDMToRostar.MDSRequest_Schema">
    <Number>157989</Number>
    <SagaNumber>23776</SagaNumber>
    <SurNameFull>Test</SurNameFull>
    <FirstName>test</FirstName>
    <GivenName>test</GivenName>
    <Gender>Man</Gender>
    <DateOfBirth>1992-04-07T00:00:00.0000000+02:00</DateOfBirth>
    <EmailPrivate>test@hotmail.com</EmailPrivate>
    <PhoneMobilePrivate>5145454558</PhoneMobilePrivate>
    <PhonePrivate/>
    <EmployementStartDate/>
    <EmployementEndDate/>
    <UPN/>
    <SAMAccountName/>
    <Functions>
        <Function>
            <StartDate>2011-10-10T00:00:00.0000000+02:00</StartDate>
            <EndDate>2015-05-31T00:00:00.0000000+02:00</EndDate>
            <CostCenter>sdrg gerg jytfjdqert htrh</CostCenter>
            <CostCenterCode/>
            <Position>ihygkhgkjhgv A</Position>
        </Function>
    </Functions>
    <Contracts>
        <Contract>
            <ID>ce369e13-f21f-4210-88e5-502bee3cdcc0</ID>
            <StartDate>2015-10-10T00:00:00.0000000+02:00</StartDate>
            <EndDate/>
            <EmployementStartDate>2024-10-10T00:00:00.0000000+02:00</EmployementStartDate>
            <EmployementEndDate/>
            <Type>Onbepaalde tijd</Type>
            <PhaseID>O</PhaseID>
            <PB_CAO>true</PB_CAO>
            <DissimelarCAO>VPB</DissimelarCAO>
        </Contract>
                <Contract>
            <ID>ce369e13-f21f-4210-88e5-502bee3cdcc0</ID>
            <StartDate>2011-10-10T00:00:00.0000000+02:00</StartDate>
            <EndDate/>
            <EmployementStartDate>2011-10-10T00:00:00.0000000+02:00</EmployementStartDate>
            <EmployementEndDate/>
            <Type>Onbepaalde tijd</Type>
            <PhaseID>O</PhaseID>
            <PB_CAO>true</PB_CAO>
            <DissimelarCAO>VPB</DissimelarCAO>
        </Contract>
    </Contracts>
    <Roosters>
        <Rooster>
            <StartDate>2011-10-10T00:00:00.0000000+02:00</StartDate>
            <EndDate/>
            <WeekAmountOfHours>30.5</WeekAmountOfHours>
        </Rooster>
    </Roosters>
    <Wages>
        <Wage>
            <ID>c4df91b1-292d-464e-b17f-259968b9c39c</ID>
            <StartDate>2016-12-05T00:00:00.0000000+01:00</StartDate>
            <EndDate>2017-01-01T00:00:00.0000000+01:00</EndDate>
            <HourlyWage>12.74</HourlyWage>
            <RightTravelExpense>true</RightTravelExpense>
            <RightTravelHours>true</RightTravelHours>
            <RightAdditions>true</RightAdditions>
            <MaxKm/>
            <DissimelarZipCode/>
        </Wage>
    </Wages>
</Employee>

输出 xml 中的预期结果是获取最旧的“EmployementStartDate”,因此在这种情况下是

<Employee xmlns="http://Securitas.ESB.HR.EmployeeUDMToRostar.MDSRequest_Schema">
    <Number>157989</Number>
    <SagaNumber>23776</SagaNumber>
    <SurNameFull>Test</SurNameFull>
    <FirstName>test</FirstName>
    <GivenName>test</GivenName>
    <Gender>Man</Gender>
    <DateOfBirth>1992-04-07T00:00:00.0000000+02:00</DateOfBirth>
    <EmailPrivate>test@hotmail.com</EmailPrivate>
    <PhoneMobilePrivate>5145454558</PhoneMobilePrivate>
    <PhonePrivate/>
    <EmployementStartDate>2011-10-10T00:00:00.0000000+02:00</EmployementStartDate>
    .
    .
    .
</Employee>

标签: xsltxslt-1.0biztalkbiztalk-2013

解决方案


推荐阅读