这是我的完整xsl:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/" name="test">
<xsl:param name="memberId"
select="PLMXML/Organisation/UserData/UserValue/UserList/Item/@value"/>
<xsl:param name="memberRef"
select="PLMXML/OrganisationMember[@id=$memberId]/@memberRef"/>
<xsl:param name="memberRef2"
select="translate($memberRef,'#','')"/>
<xsl:param name="userId"
select="PLMXML/User[@id=$memberRef2]/@personRef"/>
<xsl:param name="userId2"
select="translate($userId,'#','')"/>
<xsl:param name="personName"
select="PLMXML/Person[@id=$userId2]/@lastName"/>
<xsl:param name="groupRef"
select="PLMXML/User[@id=$memberRef2]/UserData/UserValue/@dataRef"/>
<xsl:param name="groupRef2"
select="translate($groupRef,'#','')"/>
<xsl:param name="groupName"
select="PLMXML/Organisation[@id=$groupRef2]/@name"/>
<xsl:param name="roleRef"
select="PLMXML/Organisation[@id=$groupRef2]/UserData/UserValue/@dataRef"/>
<xsl:param name="roleRef2"
select="translate($roleRef,'#','')"/>
<xsl:param name="roleName"
select="PLMXML/Role[@id=$roleRef2]/@name"/>
<xsl:value-of select="$memberId"/>
<xsl:value-of select="$memberRef"/>
<xsl:value-of select="$personName"/>
<xsl:value-of select="$groupName"/>
<xsl:value-of select="$roleName"/>
</xsl:template>
<xsl:template match="/">
<xsl:for-each select="PLMXML/Organisation/UserData/UserValue/UserList/Item/@value">
<xsl:call-template name="test">
<xsl:with-param name="memberId" select="."/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
但是,for-each循环只在模板中填充堆栈的顶部变量&#39; test&#39; - 即xsl:value-of select="$memberId"/>
有效,但<xsl:value-of select="$memberRef"/>
没有。
非常感谢有关如何解决此问题的任何想法。