我需要在xsl映射中實現某種批處理。 實施例:xsl xml批處理
輸入:
<FinTrans_Dinas_FF xmlns="http://MH.ESB.Dinas.Schemas.FinTrans_FF.FinTrans_FF">
<Line xmlns="">
<Header>
<DocumentDate>03022011</DocumentDate>
<Reference>71013849</Reference>
</Header>
<Item>
<PostingKey>01</PostingKey>
<AccountNumber>0000560141</AccountNumber>
<AmountInDocumentCurrency>/</AmountInDocumentCurrency>
<AmountInLocalCurrency>21,42</AmountInLocalCurrency>
</Item>
</Line>
<Line xmlns="">
<Header>
<DocumentDate>03022011</DocumentDate>
<Reference>71013849</Reference>
</Header>
<Item>
<PostingKey>01</PostingKey>
<AccountNumber>0000560141</AccountNumber>
<AmountInDocumentCurrency>/</AmountInDocumentCurrency>
<AmountInLocalCurrency>21,42</AmountInLocalCurrency>
</Item>
</Line>
<Line xmlns="">
<Header>
<DocumentDate>03022011</DocumentDate>
<Reference>77777777</Reference>
</Header>
<Item>
<PostingKey>02</PostingKey>
<AccountNumber>0000560141</AccountNumber>
<AmountInDocumentCurrency>/</AmountInDocumentCurrency>
<AmountInLocalCurrency>21,42</AmountInLocalCurrency>
</Item>
</Line>
</FinTrans_Dinas_FF>
現在我需要創建一個記錄的foreach獨特線(鍵=參考)。 所以在我輸入消息我有2個獨特的記錄:
Reference = 71013849
Reference = 77777777
所以我的輸出文件需要這個樣子(簡化了一點):
<Trans>
<Record>
<Lines>
<Line>
<Reference>71013849</Reference>
<Account>Account1</Account>
</Line>
<Line>
<Reference>71013849</Reference>
<Account>Account2</Account>
</Line>
</Lines>
</Record>
<Record>
<Lines>
<Line>
<Reference>77777777</Reference>
<Account>Account3</Account>
</Line>
</Lines>
</Record>
</Trans>
因此,大家可以看到我的輸入文件包含3個'Line'項目,我的輸出包含2個'Record'項目(在Record節點內部有行)。顯然在'Lines/Line'項目裏面應該有更多的數據,但是我在這個例子中簡化了它。
任何人都知道解決此問題的最佳方法? (在XSLT 1.0中)
Thx非常多!
好問題,+1。查看我的答案,獲得完整,簡短的解決方案和解釋。 – 2011-03-31 12:47:50