我是XSLT的初学者,目前我正在尝试显示< department>的列表在每个< company>中节点
下面是我的XML
<employee_data>
<employeedetails id="1">
<company id="1">
<companyname>AOL</companyname>
<department>IT</department>
</company>
<employeename>Patrick</employeename>
<employeedesg>Software Engineer</employeedesg>
<employeesalary>18000</employeesalary>
<employeedoj>10/03/2015</employeedoj>
</employeedetails>
..... similar sets......
..... similar sets......
<employeedetails id="10">
<company id="1">
<companyname>AOL</companyname>
<department>HR</department>
</company>
<employeename>Patricia</employeename>
<employeedesg>HR Assistant</employeedesg>
<employeesalary>18000</employeesalary>
<employeedoj>10/03/2015</employeedoj>
</employeedetails>
</employee_data>
我已经编写了下面的XSLT来获取公司名称,但是我希望显示来自不同公司的所有部门。
XSLT:
<xsl:key name="companyname" match="/employee_data/employeedetails/company/companyname" use="."/>
<xsl:for-each select="/employee_data/employeedetails/company/companyname[generate-id() = generate-id(key('companyname',.)[1])]">
<tr>
<td>
<xsl:value-of select="../@id"/>
</td>
<td>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:for-each>
答案 0 :(得分:0)
如果您想获得department
的{{1}}个节点,只需使用您在公司分组中使用的相同密钥
company
作为旁注,您实际上可以简化您的密钥。您实际上不需要指定<xsl:for-each select="key('companyname',.)">
<xsl:value-of select="../department" />
<br />
</xsl:for-each>
元素的完整路径,只需要名称
company
如果XML层次结构中的其他<xsl:key name="companyname" match="company" use="companyname"/>
元素存在您不想包含的元素,则只需要考虑使用路径。
另请注意,我只是为了避免使用company
父轴而与company
而非companyname
匹配。
试试这个XSLT
..