我有一些XSLT映射用於某些轉換。我的問題是我怎麼能記住1.e;循環運行的次數。例如記住每個for循環中遞歸調用模板的最後一個計數
<xsl: for each> // This runs some 3 times
<xsl: call-template > // This call template recursively runs 10 times
<xsl: with- param >
</xsl: call-template >
<xsl: for each>
在上面的例子外for循環運行3次和內呼叫模板recurively調用自身打印一些事情假設的10倍。所以我有3 * 10 = 30個週期。
我在這裏需要的是假設我有一個初始數字001,當for循環第一次運行時,它將調用將遞歸調用自身10次的模板。所以我打印的數字從001開始 - 010
下一次我運行循環時,我再次打印001-010 ans的數字,所以第三次。但我想要記住最後一個計數。假設在第一次迭代中我達到了010.因此在第二次迭代中,我將從011開始計數並打印到021. 並且在第三次,我將從022-032開始打印。
但是,任何人都可以告訴我我該怎麼做?我怎樣才能記住打印已經完成的最後一個值?
還有一件事我實際上僅限於XSLT1.0。這就是我必須像上面的例子一樣循環的原因。
這將是一個很大的幫助
我想要做的就是這樣的, 假設我有一個輸入XML作爲,
<A>
<B from="123456781" to="123456782">
........
</B>
<B from="123456781" to="123456785">
........
</B>
<B from="123456788" to="123456788">
........
</B>
</A>
在上面的XML每個節點B與一個範圍相關聯「從到」。我需要創建與給定範圍內的數字一樣多的ouputB節點。而且我還必須獲得每個創建的outputB節點的唯一計數。例如輸出XML可以像,
<root>
<outputB value="123456781" id="001"> // from first B node from="123456781" to="123456782"
<outputB value="123456782" id="002">
<outputB value="123456781" id="003">
<outputB value="123456782" id="004">// from second B node from="123456781" to="123456785"
<outputB value="123456783" id="005">
<outputB value="123456784" id="006">
<outputB value="123456785" id="007">
<outputB value="123456788" id="008">// from third B node from="123456788" to="123456788"
</root>
所以在上述的xsl我已遞歸地填充範圍值的從基礎上,並給參數雖然我除名的for-each每個輸入B節點上BU。從而創建輸出B節點的確切數量。但這裏的問題是在生成的XML中保持唯一的計數或ID。
謝謝:)
XSLT是一種聲明式編譯語言,因此不支持累積賦值或覆蓋變量,因此您無法像描述的那樣在全局變量中追蹤這些變量。你究竟想要達到什麼目的?你能發佈一些XML和期望的輸出嗎? – Utkanos
@Utkanos: - 我已經更新了這篇文章,並添加了輸入和輸出xml以更好地表達我需要獲得的成果。 –