Мне нужно реализовать некоторые виды пакетирования в сопоставлении xsl.Пример:
Ввод:
<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>
Теперь мне нужно создать запись для каждой уникальной строки (ключ = ссылка).Итак, во входном сообщении у меня есть 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)
Большое спасибо!