У меня есть преобразование, при котором я пытаюсь записать набор сглаженных деталей транзакции и в конце файла предоставить сумму итогов, сгруппированных по типу тендера и номеру регистра.
Запись набора отдельных деталей транзакции - простая часть и у меня это работает нормально, но я борюсь с итоговой частью.
Проблема в том, что я не буду знать, что и сколько существует разных номеров регистров, или что или сколько существует типов тендеров (поэтому явное перечисление сводок в xslt со строками статического фильтра недопустимо), поэтому некоторые вроде бы группировка в порядке.
Еще один ключ - я застрял на XSLT 1.0…
Я попытался возиться с мюнхианской группировкой, но между требованием составного ключа (с регистром, живущим на другом уровне, чем метод оплаты) и моим ограниченным пониманием того, как работают мюнхийский метод и ключи, я не мог понять он работает, но я думаю, что это все еще может понадобиться ...
Есть какие-нибудь предложения о том, как я могу волшебным образом заставить это работать?
вот пример исходного документа:
<s0:SalesCollection xmlns:s0="http://mySourceSchema">
<s0:Sale transactionnumber="1" register="1">
<s0:Tender amount="1.11" paymentmethod="visa" />
<s0:Tender amount="2.22" paymentmethod="mastercard" />
</s0:Sale>
<s0:Sale transactionnumber="2" register="1">
<s0:Tender amount="5.55" paymentmethod="discover" />
<s0:Tender amount="4.44" paymentmethod="visa" />
</s0:Sale>
<s0:Sale transactionnumber="1" register="2">
<s0:Tender amount="9.99" paymentmethod="amex" />
<s0:Tender amount="8.88" paymentmethod="visa" />
</s0:Sale>
</s0:SalesCollection>
вот что я собираюсь сделать (опять же, у меня уже работают записи record [@ type = 'detail']):
<ns0:root xmlns:ns0="http://myDestinationSchema">
<ns0:record type="detail" transactionnumber="1" register="1" amount="1.11" paymentmethod="visa" />
<ns0:record type="detail" transactionnumber="1" register="1" amount="2.22" paymentmethod="mastercard" />
<ns0:record type="detail" transactionnumber="2" register="1" amount="5.55" paymentmethod="discover" />
<ns0:record type="detail" transactionnumber="2" register="1" amount="4.44" paymentmethod="visa" />
<ns0:record type="detail" transactionnumber="1" register="2" amount="9.99" paymentmethod="amex" />
<ns0:record type="detail" transactionnumber="1" register="2" amount="8.88" paymentmethod="visa" />
<ns0:record type="summary" register="1" amount="5.55" paymentmethod="visa" />
<ns0:record type="summary" register="1" amount="2.22" paymentmethod="mastercard" />
<ns0:record type="summary" register="1" amount="5.55" paymentmethod="discover" />
<ns0:record type="summary" register="2" amount="9.99" paymentmethod="amex" />
<ns0:record type="summary" register="2" amount="8.88" paymentmethod="visa" />
</ns0:root>
Итак, как мне приступить к созданию итоговых записей, сгруппированных по регистрам и способам оплаты, с помощью xslt 1.0?