我需要帮助使用xslt使用另一个行值从表中检索行值。
我有一张表格如下:
Employee Manager
ABC PQR
ABC LMN
DEF XYZ
IJK XYZ
员工可以属于多个部门,可以拥有多个经理。
并且表的xml是:
<List>
<Mapping>
<Employee>ABC</Employee>
<Manager>PQR</Manager>
</Mapping>
<Mapping>
<Employee>ABC</Employee>
<Manager>LMN</Manager>
</Mapping>
<Mapping>
<Employee>DEF</Employee>
<Manager>XYZ</Manager>
</Mapping>
...
</List>
我从一个函数中获取员工姓名。在XSLT中使用员工姓名作为输入,我应该如何使用XSLT找到员工的经理姓名。我唯一的输出值应该是管理员名称列表或单个值。传递“ABC”员工姓名应该给我“PQR”和“LMN”作为经理值。
由于 KSR81
答案 0 :(得分:1)
<xsl:param name="empName" />
<xsl:template match="/">
<xsl:for-each select="//Mapping[Employee = $empName]">
<xsl:value-of select="Manager"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
这将输出给定员工的每个经理的名称,以空格分隔和终止。
为了更有效地执行此操作,您可能希望使用keys:
<xsl:param name="empName" />
<xsl:key name="mappingByEmployee" match="Mapping" use="Employee" />
<xsl:template match="/">
<xsl:for-each select="key('mappingByEmployee', $empName)">
<xsl:value-of select="Manager"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
答案 1 :(得分:0)