我有一個輸入XML,其具有以下結構,增量節點值動態
<VEN>
<CUS>
<MEM>
<MEM>
<MEM>
</CUS>
<CUS>
<MEM>
<MEM>
<MEM>
</CUS>
每個節點中發生的輸入XML多次。每個MEM 節點中都有一個@ CLM01屬性,根據MEM節點的每20次出現,必須分配一個值。從第一個VEN/CUS開始,如果有55個MEM節點,那麼前20個節點的@ CLM01值爲'1',對於相同的VEN/CUS組合,接下來的20個節點的值爲'2',其餘15個節點將有@ CLM01值'3'。
對於在相同VEN下的下一個CUS(假設該CUS具有30個MEM節點),前20個MEM節點將具有@ CLM01值'4',並且接下來10個MEM將具有值'5'的@ CLM01。這繼續.....我希望我清楚我想要達到什麼。
謝謝。可能嗎?使用XSLT 1.0
下面是示例輸入
<Data>
<VEN vendorId= "v1">
<CUS custId = "c1">
<MEM memId="m1" CLM01=""/>
<MEM memId="m2" CLM01=""/>
<MEM memId="m3" CLM01=""/>
<MEM memId="m4" CLM01=""/>
<MEM memId="m5" CLM01=""/>
</CUS>
<CUS custId = "c2">
<MEM memId="m11" CLM01=""/>
<MEM memId="m12" CLM01=""/>
<MEM memId="m13" CLM01=""/>
<MEM memId="m14" CLM01=""/>
<MEM memId="m15" CLM01=""/>
<MEM memId="m16" CLM01=""/>
<MEM memId="m17" CLM01=""/>
<MEM memId="m18" CLM01=""/>
</CUS>
</VEN>
<VEN vendorId= "v2">
<CUS custId = "c1">
<MEM memId="m4" CLM01=""/>
<MEM memId="m5" CLM01=""/>
<MEM memId="m6" CLM01=""/>
<MEM memId="m7" CLM01=""/>
<MEM memId="m8" CLM01=""/>
</CUS>
<CUS custId = "c1">
<MEM memId="m33" CLM01=""/>
<MEM memId="m44" CLM01=""/>
<MEM memId="m55" CLM01=""/>
<MEM memId="m66" CLM01=""/>
<MEM memId="m77" CLM01=""/>
<MEM memId="m88" CLM01=""/>
<MEM memId="m99" CLM01=""/>
<MEM memId="m11" CLM01=""/>
</CUS>
</VEN>
所需的輸出(MEM節點的代替20個OCCURENCES我們去每3個OCCURENCES)
<Data>
<VEN vendorId= "v1">
<CUS custId = "c1">
<MEM memId="m1" CLM01="1"/>
<MEM memId="m2" CLM01="1"/>
<MEM memId="m3" CLM01="1"/>
<MEM memId="m4" CLM01="2"/>
<MEM memId="m5" CLM01="2"/>
</CUS>
<CUS custId = "c2">
<MEM memId="m11" CLM01="3"/>
<MEM memId="m12" CLM01="3"/>
<MEM memId="m13" CLM01="3"/>
<MEM memId="m14" CLM01="4"/>
<MEM memId="m15" CLM01="4"/>
<MEM memId="m16" CLM01="4"/>
<MEM memId="m17" CLM01="5"/>
<MEM memId="m18" CLM01="5"/>
</CUS>
</VEN>
<VEN vendorId= "v2">
<CUS custId = "c1">
<MEM memId="m4" CLM01="6"/>
<MEM memId="m5" CLM01="6"/>
<MEM memId="m6" CLM01="6"/>
<MEM memId="m7" CLM01="7"/>
<MEM memId="m8" CLM01="7"/>
</CUS>
<CUS custId = "c1">
<MEM memId="m33" CLM01="8"/>
<MEM memId="m44" CLM01="8"/>
<MEM memId="m55" CLM01="8"/>
<MEM memId="m66" CLM01="9"/>
<MEM memId="m77" CLM01="9"/>
<MEM memId="m88" CLM01="9"/>
<MEM memId="m99" CLM01="10"/>
<MEM memId="m11" CLM01="10"/>
</CUS>
</VEN>
爲什麼不提供具有實際結構的格式良好的輸入?你想要產生的輸出?讓人們更容易找出你想要達到的目標。 – Lumi 2011-05-01 21:18:04
@邁克爾:是的,你是對的。我想這會有所幫助。謝謝。我使用xsl:number存儲在變量中,但是我不知道如何在MEM的每3個節點之後實現遞增值的條件。 – bluesnowxyz 2011-05-01 22:18:37
好問題,+1。查看我的答案獲得完整的解決方案。 – 2011-05-02 02:31:17