xml是
<XYZ>
<manager>
<mId>m1</mId>
<mName>mName1</mName>
<manager>
<manager>
<mId>m2</mId>
<mName>mName2</mName>
<manager>
<department>
<dName>d1</dName>
<dManager>m1</dManager>
<department>
<department>
<dName>d2</dName>
<dManager>m1</dManager>
<department>
<department>
<dName>d3</dName>
<dManager>m2</dManager>
<department>
</XYZ>
对于每个经理,输出他管理的所有部门名称,我的代码是这样的
<xsl:for-each select="XYZ/manager">
<xsl:variable name='mId'>
<xsl:value-of select="mId"/>
</xsl:variable>
<p>
manager <xsl:value-of select="mName"/> manages department
<xsl:for-each select="XYZ/department[dManager=$mId]">
<xsl:value-of select="XYZ/department/dName"/>,
</xsl:for-each>
</p>
</xsl:for-each>
在manages department
之后没有任何输出,有人知道怎么回事吗?谢谢!
最佳答案
您的 for-each
中存在上下文问题:for-each
指令更改了上下文,然后当您应用第二个 for-each
和/或当您调用 department/dName
的值时,您不在正确的上下文中。
然后只需按如下方式修复最后两个选择:
<xsl:for-each select="XYZ/manager">
<xsl:variable name='mId'>
<xsl:value-of select="mId"/>
</xsl:variable>
<p>
manager <xsl:value-of select="mName"/> manages department
<xsl:for-each select="/XYZ/department[dManager=$mId]">
<xsl:value-of select="dName"/>,
</xsl:for-each>
</p>
</xsl:for-each>
关于xml - 如何在 xsl 中的另一个 for-each 中使用 for-each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27010649/