免責聲明自我重複增加自動編號的XSL
最近,我問了一個question about complex autonumbers in XSL和quickely得到了一個很好的答案。直到後來才意識到我忘記了我的例子中的一個細節。我不確定Stackoverflow推薦的策略是什麼:我應該提出一個新問題還是開始修改我之前的帖子?由於我已經對我所問及接受的問題有了一個很好的答案,我決定最好提出一個新問題,因爲它與我之前提出的問題有些不同。
問題
所以這是XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<XML>
<thing>line</thing>
<thing>line</thing>
<thing>line</thing>
<thing>line</thing>
</XML>
我需要變換成新的XML具有開頭的結構如下:
<ids>
<id id="1" nr="0"/>
<id id="2" nr="10"/>
<id id="3" nr="10"/>
<id id="4" nr="20"/>
<id id="5" nr="20"/>
<id id="6" nr="30"/>
<id id="7" nr="30"/>
<id id="8" nr="40"/>
</ids>
以下作爲對我之前問題的答覆,我收到的樣式表幾乎是這樣做的。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" omit-xml-declaration="no" />
<xsl:template match="/">
<XML>
<ids>
<xsl:for-each select="1 to xs:integer(count(//thing) * 2)">
<id id="{position()}" nr="{(position() - 1)*10}"/>
</xsl:for-each>
</ids>
</XML>
</xsl:template>
</xsl:stylesheet>
它產生這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<XML>
<ids>
<id id="1" nr="0"/>
<id id="2" nr="10"/>
<id id="3" nr="20"/>
<id id="4" nr="30"/>
<id id="5" nr="40"/>
<id id="6" nr="50"/>
<id id="7" nr="60"/>
<id id="8" nr="70"/>
</ids>
</XML>
然而,我想有在NR的模式0,10,10,20,20,30,30,40等,用於如需要多次來獲得數量的兩倍,而不是原始XML中的事物節點。過去幾天我一直在試圖弄清楚,但最後不得不再次提問。在所有其他方面,這個XSL現在的工作現在也非常適合我的真實數據。
這幾乎工作,但會有0只有一次,在這之後計數將繼續對是很重要的。但我可以很容易想象使用這個模板,謝謝你分享它! – nikopartanen 2014-09-12 18:07:23
查看編輯的簡單修復 – 2014-09-12 18:11:05