我有下面的XML文件:包括在XPath的一个不相关的元素的属性
<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="[email protected]" department="2" room="" />
<employee id="2" fname="Bugs" lname="Bunny" title="Programmer" email="[email protected]" 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
元素中。但是,我不知道如何解决它。任何人都可以给我一个提示吗?
请*简化*您的。我们可以使用:match =“department”。事实上,“匹配”属性的值是*匹配模式*,这比完整的XPath表达式更简单。 –
2009-02-18 14:57:16