我有以下XSL樣式表:計數由<調用模板>返回元素的數量
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:template match="/">
<xsl:variable name="elements">
<xsl:call-template name="get-some-nodes"/>
</xsl:variable>
<root>
<values>
<xsl:copy-of select="$elements"/>
</values>
<count>
<xsl:value-of select="count($elements)"/>
</count>
</root>
</xsl:template>
<xsl:template name="get-some-nodes">
<node>1</node>
<node>2</node>
<node>3</node>
</xsl:template>
</xsl:stylesheet>
(它不應該不管你申請什麼XML它,它會生成自己的數據)。
的這本(使用xsltproc的)的結果是:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.w3.org/1999/xhtml" xmlns:set="http://exslt.org/sets">
<values>
<node>1</node>
<node>2</node>
<node>3</node>
</values>
<count>1</count>
</root>
鑑於所謂的模板返回三個節點,我希望「計數($元素)」爲3,但它是一個。我懷疑也許結果被包裝在某種根節點,但任何嘗試計數($ elements/*)或類似失敗,我相信因爲$元素是一個結果樹片段,而不是一個節點集。
我無法獲得exslt或xslt2.0的任何好東西,當然有一種方法可以獲得存儲在變量中的節點的數量嗎?
我也很樂意計算調用模板返回的節點而不使用中間變量,但我不明白這怎麼可能。
好問題,1。請參閱我的答案以獲取詳細的解釋和解決方案 – 2010-11-15 23:29:23