У меня есть входной XML, который имеет следующую структуру:
<VEN>
<CUS>
<MEM>
<MEM>
<MEM>
</CUS>
<CUS>
<MEM>
<MEM>
<MEM>
</CUS>
каждый узел встречается несколько раз во входном XML.В каждом узле MEM есть атрибут @ CLM01, которому должно быть присвоено значение в зависимости от каждых 20 вхождений узлов MEM.Начиная с первого VEN / CUS, если имеется 55 узлов MEM, то первые 20 узлов будут иметь значение @ CLM01, равное «1», и для той же комбинации VEN / CUS следующие 20 узлов будут иметь значение «2», а остальные 15 узлов будут иметьимеют значение @ CLM01 '3'.
И для следующего CUS (при условии, что этот CUS имеет 30 узлов MEM) под тем же VEN первые двадцать узлов MEM будут иметь значение @ CLM01 '4' и следующие десять MEMбудет иметь @ CLM01 со значением '5'.Это продолжается ..... Я надеюсь, что я ясно, что я пытаюсь достичь.
Спасибо.Является ли это возможным?используя 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>
Желаемый вывод (вместо 20 вхождений узлов MEM мы используем каждые 3 вхождения)
<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>