У меня есть следующий XML-файл:
<phonebook>
<departments>
<department id="1" parent="" title="Rabit Hole" address="" email="" index=""/>
<department id="2" parent="" title="Big Pond" address="" email="" index=""/>
</departments>
<employees>
<employee id="1" fname="Daffy" lname="Duck" title="Admin" email="daffy.duck@example.com" department="2" room="" />
<employee id="2" fname="Bugs" lname="Bunny" title="Programmer" email="bugs.bunny@example.com" department="1" room="" />
</employees>
</phonebook>
При его отображении я хочу показать контактные данные сотрудника, а также название отдела, в котором он работает. Вот что у меня в шаблоне:
<xsl:for-each select="phonebook/employees/employee">
<xsl:sort select="@lname" />
<tr>
<td>
<span class="lname"><xsl:value-of select="@lname"/></span>
<xsl:text> </xsl:text>
<span class="fname"><xsl:value-of select="@fname"/></span>
</td>
<td><xsl:value-of select="@title"/></td>
<td>
<xsl:value-of select="/phonebook/departments/department[@id='{@department}']/@title"/>
</td>
<td><a href="mailto:{@email}"><xsl:value-of select="@email"/></a></td>
</tr>
</xsl:for-each>
Проблема в том, что следующее правило не работает:
<xsl:value-of select="/phonebook/departments/department[@id='{@department}']/@title"/>
Полагаю, это потому, что механизм XSLT ищет свойство department
в элементе department
, а не в элементе employee
. Тем не менее, я не знаю, как это исправить. Может ли кто-нибудь дать мне подсказку на это?