2009-06-09 59 views
0

說我有,我有XSL走過的XML片段:我可以將值的總和存儲在xsl中嗎?

<Columns> 
    <Column width="100"> 
    <Column width="50"> 
    <Column width="75"> 
    <Column width="33"> 
</Columns> 

基本上就是我想要做的是,因爲我通過每個節點走,我需要存儲之前的「寬度的總和'要用於當前Column節點的屬性。例如,當我到達最後一個Column節點(寬度爲33)時,我希望能夠訪問某種變量(100 + 50 + 75)中所有先前寬度的總和。我知道,一旦在XSL中設置變量的值就不能改變,所以我想知道是否有某種方法使用模板參數或某些事情來做到這一點。提前致謝!

+0

您使用的是哪種XSLT引擎? – 2009-06-09 16:04:23

+0

.NET xslt引擎 – Nate 2009-06-09 17:41:05

回答

1

本質上,您可以利用模板遞歸併限制僅傳遞給下一個兄弟的集合。從第一項開始,您可以不斷地將更新的值傳遞給下一個模板調用。

<xsl:template match="/"> 
    <xsl:apply-templates select="Columns/Column[1]" /> 
</xsl:template> 

<xsl:template match="Column"> 
    <xsl:param name="runningtotal" select="0"/> 
    [<xsl:value-of select="@width"/>:<xsl:value-of select="[email protected]"/>] 
    <xsl:apply-templates select="following-sibling::Column[1]" > 
     <xsl:with-param name="runningtotal" select="[email protected]"/> 
    </xsl:apply-templates> 
</xsl:template> 
相關問題