开发者

How to use XSLT to get a row value in a table

I need help in using xslt to retrieve a row value from a table using another row value.

I have a table as follows:

Employee       Manager
ABC           PQR
ABC           LMN
DEF           XYZ
IJK           XYZ

Employee can belong to more than one depa开发者_如何学运维rtment and can have more than one manager.

and the xml for the table is:

<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>

I get the employee name from a function. Using employee name as input in XSLT, how should i find the employee's manager name using XSLT. My only output value should be the Manager Name either a list or single value. Passing "ABC" employee name should give me both "PQR" and "LMN" as manager values.

Thanks KSR81


<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>

This will output the name of each manager for the given employee, separated and terminated by a space.

To do this more efficiently, you will probably want to use 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>


   <xsl:for-each select="Mapping">
     <xsl:if test="Employee = "ABC"">
         <xsl:value-of select="manager"/>
     <xsl:if>
  </xsl:for-each>

Check here for more, and working with parameters here?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜