1
我喜歡創建一個變量,其中包含相應元素的完整PACKAGE名稱路徑。 (只是爲了能夠比較晚路徑)XSLT 2.0使用for-each循環設置變量
現在我有XSLT結構:
<xsl:for-each select="ancestor-or-self::*">
<xsl:if test="local-name()='PACKAGE'">
<xsl:text>/</xsl:text>
<xsl:value-of select="NAME/."/>
<xsl:if test="position() != last()">
</xsl:if>
</xsl:if>
</xsl:for-each>
這上面的結構導致了我正確的路徑,但是當我試圖把那個輸出變量(通過將foreach之外的<xsl:variable name="myPath">
和</xsl:variable>
)變量保持爲空。
那麼,爲什麼在:
<xsl:variable name="myPath">
<xsl:for-each select="ancestor-or-self::*">
<xsl:if test="local-name()='PACKAGE'">
<xsl:text>/</xsl:text>
<xsl:value-of select="NAME/."/>
<xsl:if test="position() != last()">
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:variable>
$myPath
仍然是空的? 我在這裏錯過了什麼?
如果您嘗試在循環中分配數字,它會工作嗎? – bf2020
數字賦值不會改變這種情況。我用Saxon-B 9.1.0.6使用Oxygen。如果將foreach循環放置在變量assigment中,它似乎不會被訪問。上面的腳本向我輸出了正確的路徑,但我無法將其設置爲變量。 – Janne
確保您在代碼後面的某個地方使用該變量,否則XSLT處理器根本無法執行代碼。因此,在沒有看到更多信息的情況下,我認爲撒克遜人根本就沒有執行變量的值,因爲你不使用它。如果您仍有問題,請考慮發佈最少但完整的樣本,以便我們重現問題。 –