【发布时间】:2015-09-13 10:20:56
【问题描述】:
您好,我尝试使用单个 XSLT 转换进行复杂映射。但是我尝试了for-each和apply-templates,甚至都达不到要求。
以下是条件。
1) 通过连接 Firstname、Lastname 和 DeptNo 对员工元素进行分组
2) 在唯一的员工元素中,如果主要联系人是“Y”,则将相应的记录手机号码映射到目标
3) 如果不存在具有“Y”值的 PrimaryConcat 元素,则从 PrimaryConcat 值为“N”的员工记录中映射手机号码
4) 如果“Y”和“N”都不存在,则不要映射手机号码
将有超过一百万个 Employee 元素进入输入,包括地址、联系方式等。我在这里仅举了一个带有手机号码的示例。
谢谢
输入 XML
<Employees>
<Employee>
<PrimaryContact>Y</PrimaryContact>
<Name>
<FirstName>Paul</FirstName>
<LastName>Hecht</LastName>
</Name>
<DeptNo>10008072</DeptNo>
<MobNo>78952646</MobNo>
</Employee>
<Employee>
<PrimaryContact>N</PrimaryContact>
<endDate>0001-01-15T00:00:00.000Z</endDate>
<Name>
<FirstName>Paul</FirstName>
<LastName>Hecht</LastName>
</Name>
<DeptNo>10008072</DeptNo>
<MobNo>54646544</MobNo>
</Employee>
<Employee>
<PrimaryContact/>
<Name>
<FirstName>Chris</FirstName>
<LastName>Grey</LastName>
</Name>
<DeptNo>10001760</DeptNo>
<MobNo>1378956</MobNo>
</Employee>
<Employee>
<PrimaryContact>N</PrimaryContact>
<Name>
<FirstName>Chris</FirstName>
<LastName>Grey</LastName>
</Name>
<DeptNo>10001760</DeptNo>
<MobNo>78941236</MobNo>
</Employee>
<Employee>
<PrimaryContact/>
<Name>
<FirstName>Jessica</FirstName>
<LastName>Thruman</LastName>
</Name>
<DeptNo>10008022</DeptNo>
<MobNo>7895264446</MobNo>
</Employee>
<Employee>
<PrimaryContact/>
<Name>
<FirstName>Jessica</FirstName>
<LastName>Thruman</LastName>
</Name>
<DeptNo>10008022</DeptNo>
<MobNo>5464786544</MobNo>
</Employee>
</Employees>
预期输出:
<Employees>
<Employee>
<Name>
<FirstName>Paul</FirstName>
<LastName>Hecht</LastName>
</Name>
<MobNo>78952646</MobNo>
</Employee>
<Employee>
<Name>
<FirstName>Chris</FirstName>
<LastName>Grey</LastName>
</Name>
<MobNo>78941236</MobNo>
</Employee>
<Employee>
<Name>
<FirstName>Jessica</FirstName>
<LastName>Thruman</LastName>
</Name>
<MobNo/>
</Employee>
</Employees>
【问题讨论】: