我已经在堆栈溢出上尝试了很多东西,但我仍然面临同样的问题。需要用于多行项目的XSLT
让我试着解释我的问题以及我需要达到的目标。为此,我有以下XML:
<authorizationGroups>
<authorizationGroup> <!-- can be multiple -->
<name>OGroup 1</name>
<application> <!-- can be multiple -->
<uid>646</uid>
<applicationFunctions> <!-- can be multiple -->
<name>auth function 11</name>
<name>auth function 12</name>
</applicationFunctions>
</application>
<role>5000682864</role>
<role>5000685391</role>
</authorizationGroup>
<authorizationGroup> <!-- can be multiple -->
<name>OGroup 8</name>
<application> <!-- can be multiple -->
<uid>646</uid>
<applicationFunctions> <!-- can be multiple -->
<name>auth function 13</name>
<name>auth function 14</name>
</applicationFunctions>
</application>
<role>5000683374</role>
<role>5000685391</role>
</authorizationGroup>
我需要出去这样的事情:
<resource-types>
<resource-types>
<resource-type>
<name>OGroup 1</name>
<actions>
auth function 11,
auth function 12
</actions>
</resource-type>
<resource-type>
<name>OGroup 8</name>
<actions>
auth function 13,
auth function 14
</actions>
</resource-type>
</resource-types>
我的问题是,当我使用XSLT我总是结束了所有的“授权功能xx”。
我当前的代码片段看起来是这样的(但显然不止这部分):
<resource-types>
<xsl:call-template name="resource_types"/>
</resource-types>
<xsl:template name="resource_types">
<resource-types>
<xsl:for-each select="/authorizationGroups/authorizationGroup/name">
<resource-type>
<name>
<xsl:value-of select="text()"/>
</name>
<actions>
<xsl:for-each select="/authorizationGroups/authorizationGroup/application/applicationFunctions">
<xsl:value-of select=".//text()"/>
,
</xsl:for-each>
</actions>
</resource-type>
</xsl:for-each>
</resource-types>
</xsl:template>
现在我收到的所有“身份验证功能XX”一气呵成。我对XSLT的理解是有限的,所以我的主要问题是如何限制对我所在的XML文档部分的搜索。
我认为这是一个非常简单的操作,但经过三天的研究在网络和堆栈溢出我还没有拿出一个答案。
立方米 安德烈亚斯
辉煌 - 你让我很快乐。非常感谢你! – user1292584 2012-03-26 12:58:23