Я пытаюсь суммировать некоторые значения XML в одном узле на основе значения в другом узле.
Узел в Entry
, относящийся к Item, всегда на RecordNo
меньше, чем RecordNo
в Item
. Таким образом, Entry
с RecordNo
1 связано с элементом с RecordNo
2.
Я хочу суммировать все узлы Item/Cost, где IsValid = 1
для соответствующего узла входа. Я могу использовать только XSLT версии 1.0.
я пытался
Sum(../Items/Item[../Entries/Entry[IsValid=1 and RecordNo -1 = ../Entries/Entry/RecordNo]])
Мой желаемый результат из приведенного ниже примера будет 22.
<Root>
<Items>
<Item>
<Cost>10</Cost>
<RecordNo>2</RecordNo>
<Type>1</Type>
</Item>
<Item>
<Cost>12</Cost>
<RecordNo>5</RecordNo>
<Type>1</Type>
</Item>
<Item>
<Cost>10</Cost>
<RecordNo>9</RecordNo>
<Type>2</Type>
</Item>
</Items>
<Entries>
<Entry>
<IsValid>1</IsValid>
<RecordNo>1</RecordNo>
</Entry>
<Entry>
<IsValid>1</IsValid>
<RecordNo>4</RecordNo>
</Entry>
<Entry>
<IsValid>0</IsValid>
<RecordNo>8</RecordNo>
</Entry>
</Entries>
</Root>