我現在到了我的XSL樣式表的最後一步,它需要我輸出一個數字,表示添加的節點總數。其實,它似乎並不那麼直截了當:如何統計XSLT中的節點?
首先,我不計算從原始xml文檔中的節點,我將從結果XML中計算某些節點(最初xml文件可能是空的)。
其次,我不算所有的節點。
例如,下面是一段我的XSLT代碼:
<xsl:template name="Loop2000A">
<Loop2000A>
<HL>
<HL01>
<xsl:value-of select="'1'"/>
</HL01>
<HL03>
<xsl:value-of select="'20'"/>
</HL03>
</HL>
<xsl:if test="$recbat//provider_taxonomy_qual !='' ">
<PRV>
<PRV01>
<xsl:value-of select="'BI'"/>
</PRV01>
<PRV02>
<xsl:value-of select="$recbat//provider_taxonomy_qual"/>
</PRV02>
<PRV03>
<xsl:value-of select="$recbat//provider_taxonomy"/>
</PRV03>
</PRV>
</xsl:if>
<xsl:call-template name="Loop2010AA"/>
因此,對於這個代碼,並稱爲段,而那些$ recbat等都是數據源。所以,我真正想要計算的是這些段的數量,它可以跨越不同的模板(如上面的「Loop2010AA」模板,這是另一個模板),並且這些段可能有循環,所以它們可以連續創建3次,我們的櫃檯應該相應地增加3,或者「if」聲明失敗,因此沒有創建這樣的分段,那麼櫃檯應該保持不變。
我不確定實現這個的正確方法,因爲我已經使用的大多數教程都是關於對原始XML文檔中的節點進行計數的。現在我有一個想法是使用參數傳遞,但我不知道如何使此參數成爲全局參數?
另外,我正在考慮一個更直接的方式來做到這一點。除了使用計數器變量之外,是否有任何方法可以首先生成輸出xml文檔,然後在此xml中計算我想要的節點,然後使用其中的數字生成TRUE輸出。
有了完整的樣式表,人們可以用適當的函數`scan`模式來重構它。如果沒有樣式表,我只能建議一個兩階段轉換:將所有內容輸出到一個變量中,然後對節點進行計數。 – 2011-01-31 19:20:59
@Alejandro:我實際上已經有了我的所有樣式表,並且通過使用(「calling-template」)將它們鏈接在一起。所以使用我應該看看掃描模式? – Kevin 2011-01-31 19:29:17