xslt - 脚本 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>
解决方案
推荐阅读
- amazon-web-services - AWS Cloudfront 不适用于自定义域
- sql - 将多选查询更改为 CTE 查询
- php - 如何修复'单选按钮值未保存在数据库中
- c# - 无法同时发布元数据和多部分。收到 400 错误请求
- design-patterns - 两个类之间的“创建”/实例化关系是什么?
- c# - 如何对 w3wp 进行故障排除
- python - 当球第一次和第二次击中它时如何使矩形改变颜色,然后在第三次击中时使其消失?
- c# - 通过 url 进行 ASP.NET Core 2 本地化。页面上生成的 url 语言路由值不一致
- sql - 连接表中没有匹配的行将整行归零
- c# - 每个 API 创建一个 HTTP 客户端