我已經在堆棧溢出上嘗試了很多東西,但我仍然面臨同樣的問題。需要用於多行項目的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