我有下面的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