1
考慮以下XSLT 2.0模板如何在XSLT中創建不是文檔片段的變量?
<xsl:template match="/">
<xsl:variable name="var1">
<elem>1</elem>
<elem>2</elem>
<elem>3</elem>
</xsl:variable>
<xsl:text>var1 has </xsl:text>
<xsl:value-of select="count($var1)"/>
<xsl:text>elements.
</xsl:text>
<xsl:variable name="var2" select="$var1/elem[position() > 1]"/>
<xsl:text>var2 has </xsl:text>
<xsl:value-of select="count($var2)"/>
<xsl:text>elements.
</xsl:text>
</xsl:template>
此模板的輸出是
var1 has 1 elements
var2 has 2 elements
第一行輸出1(而不是如我第一預期3)因爲var1
是一個文檔片段,其包含<elem>
元素作爲孩子。現在我的問題:
如何創建一個不包含文檔片段的變量?我可以像做var2
那樣做,只留下謂詞。但也許有一種方法不使用第二個變量。或者,作爲替代方案:如何在過濾掉某些元素的同時將文檔片段保留在變量中?
背景信息:我將在遞歸函數中使用變量內容,該函數檢查var1
中的第一個元素是否符合某些條件。如果符合條件或元素列表爲空,則返回一個值。否則它會自動調用var1
的第一個元素(像我在var2
中那樣)。當使用var1
作爲包含文檔片段的參數時,我的模板中的XPath表達式將不匹配。
問得好(+1)。看到我的答案爲解決方案。 – 2010-06-08 13:41:16