在使用XSLT實現此需求時需要一些幫助,我已經使用SAX解析器實現了此代碼的Java代碼,但由於客戶請求改變了某些內容。XSLT:分割無繼續元素/分組繼續元素
所以我們現在正在使用XSLT進行編譯,並且不需要編譯並部署到Web服務器。我有如下的XML。
實施例1:
<ShotRows>
<ShotRow row="3" col="3" bit="1" position="1"/>
<ShotRow row="3" col="4" bit="1" position="2"/>
<ShotRow row="3" col="5" bit="1" position="3"/>
<ShotRow row="3" col="6" bit="1" position="4"/>
<ShotRow row="3" col="7" bit="1" position="5"/>
<ShotRow row="3" col="8" bit="1" position="6"/>
<ShotRow row="3" col="9" bit="1" position="7"/>
<ShotRow row="3" col="10" bit="1" position="8"/>
<ShotRow row="3" col="11" bit="1" position="9"/>
</ShotRows>
輸出1:
<ShotRows>
<ShotRow row="3" colStart="3" colEnd="11" />
</ShotRows>
<!-- because the col is continuous from 3 to 11 -->
實施例2:
<ShotRows>
<ShotRow row="3" col="3" bit="1" position="1"/>
<ShotRow row="3" col="4" bit="1" position="2"/>
<ShotRow row="3" col="6" bit="1" position="3"/>
<ShotRow row="3" col="7" bit="1" position="4"/>
<ShotRow row="3" col="8" bit="1" position="5"/>
<ShotRow row="3" col="10" bit="1" position="6"/>
<ShotRow row="3" col="11" bit="1" position="7"/>
<ShotRow row="3" col="15" bit="1" position="8"/>
<ShotRow row="3" col="19" bit="1" position="9"/>
</ShotRows>
輸出2:
<ShotRows>
<ShotRow row="3" colStart="3" colEnd="4" />
<ShotRow row="3" colStart="6" colEnd="8" />
<ShotRow row="3" colStart="10" colEnd="11" />
<ShotRow row="3" colStart="15" colEnd="15" />
<ShotRow row="3" colStart="19" colEnd="19" />
</ShotRows>
其基本思想是將任何連續的列組合到一個元素中,例如col 3到4,col 6到8,col 10到11,col 15只有一個,col 19只有一個。提前致謝。
簡單而優雅,+1。:) – Tomalak 2010-03-08 12:34:52
XSLT 2.0也可以通過Saxon.NET在.NET中使用。 – 2010-03-08 13:40:49
我們在java中使用Saxon 9.1 – Gerald 2010-03-08 14:51:43