2015-09-21 83 views
1

這裏我有一個小的片段,它在if條件下有一個變量num_cpu,我無法在if條件標籤之外訪問它。我如何解決這個問題?在xslt中使用範圍的變量範圍

我如何使num_cpu全局,以便我可以在for循環外多次使用它?

<xsl:for-each select="t:container"> 
     <xsl:if test="@name = 'cpu'"> 
      <xsl:variable name="num_cpu" select="t:leaf/t:value/@value"/> 
     </xsl:if> 
     <xsl:value-of select="$num_cpu"/> 
    </xsl:for-each> 

回答

0

要定義全局變量,請將<xsl:variable>元素作爲根樣式表元素的子元素。

除了回答評論中的問題。如何更改if條件中的值: XSLT不是一種命令式編程語言,您可以在其中更改變量的值。

如果您想要將值從一個模板傳遞到另一個模板,則可以使用一個參數,例如

代碼段

<xsl:template match="foo"> 

    <xsl:apply-templates select="bar"> 

    <xsl:with-param name="pos" select="100"/> 

    </xsl:apply-templates> 

</xsl:template> 



<xsl:template match="bar"> 

    <xsl:param name="pos"/> 

    <xsl:value-of select="$pos"/> 

</xsl:template> 
+0

感謝您的回覆嗨, 即使我聲明價值正在如果狀況是無法訪問外,如果條件下,如何處理,根據分配給它下根樣式表中的變量? –

+0

您不是在if條件中爲變量賦值,而是聲明恰好具有相同名稱的全新變量。 –