我有一个 xml 文件,其中有两个元素“employeeID”和“managerID”。我喜欢检查 managerID 是否不存在于 employeeID 中的任何值中,然后将 managerID 的值替换为“未找到”。
如果 managerID 的值与 employeeID 中的任何值不匹配,我必须转换下面的 xml 并将第二个元素 managerID 的值替换为“Not Found”。
<wd:Report_Data xmlns:wd="urn:com.workday.report/bsvc">
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE1</wd:employeeID>
<wd:managerID>EMPLOYEE5</wd:managerID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE2</wd:employeeID>
<wd:managerID>EMPLOYEE6</wd:managerID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE6</wd:employeeID>
<wd:managerID>EMPLOYEE17</wd:managerID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE17</wd:employeeID>
<wd:managerID>EMPLOYEE3</wd:managerID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE3</wd:employeeID>
<wd:managerID>EMPLOYEE2</wd:managerID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE4</wd:employeeID>
<wd:managerID>EMPLOYEE22</wd:managerID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:employeeID>EMPLOYEE8</wd:employeeID>
<wd:managerID>EMPLOYEE2</wd:managerID>
</wd:Report_Entry>
</wd:Report_Data>
我的 xslt 如下所示,但每个人都返回“未找到”。预期结果应为
EMPLOYEE1,未找到
员工2,员工6
员工6,员工17
员工 17,员工 3
员工 3,员工 2
EMPLOYEE4,未找到
员工8,员工2
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wd="urn:com.workday.report/bsvc"
xmlns:this="urn:this-stylesheet" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="text"/>
<xsl:variable name="Delimiter" select="';'"/>
<xsl:variable name="Newline" select="'
'"/>
<xsl:variable name="allemployeesID">
<xsl:for-each select="/wd:Report_Data/Report_Entry">
<xsl:value-of select="wd:employeeID"/>
</xsl:for-each>
</xsl:variable>
<xsl:template match="/">
<xsl:for-each select="wd:Report_Data/wd:Report_Entry">
<xsl:value-of select="wd:employeeID"/>
<xsl:value-of select="$Delimiter"/>
<xsl:choose>
<xsl:when test="contains($allemployeesID,wd:managerID)">
<xsl:value-of select="wd:managerID"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'Not Found'" />
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$Newline"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>