У меня есть XSLT, который группирует вход, суммирует текущую группу и выводит только запись, если сумма соответствует определенному условию. Для каждой группы отлично работает, но я не могу получить точное количество записей для записи трейлера.XSLT 2.0 Группирование, суммирование, подсчет и условия
Вот входной пример:
<Book_Data>
<Book_Entry>
<Book>
<Book_ID>1</Book_ID>
<Book_Name>Test1</Book_Name>
</Book>
<Sales>
<Quantity>2</Quantity>
</Sales>
<Book_Entry>
<Book_Entry>
<Book>
<Book_ID>1</Book_ID>
<Book_Name>Test1</Book_Name>
</Book>
<Sales>
<Quantity>3</Quantity>
</Sales>
<Book_Entry>
<Book_Entry>
<Book>
<Book_ID>2</Book_ID>
<Book_Name>Test2</Book_Name>
</Book>
<Sales>
<Quantity>3</Quantity>
</Sales>
<Book_Entry>
<Book_Entry>
<Book>
<Book_ID>2</Book_ID>
<Book_Name>Test2</Book_Name>
</Book>
<Sales>
<Quantity>-3</Quantity>
</Sales>
<Book_Entry>
</Book_Data>
А вот пример XSLT (2,0):
<xsl:for-each-group select="Book_Data/Book_Entry" group-by="Book/Book_ID">
<xsl:if test="sum(current-group()/Sales/Quantity) != 0">
<xsl:value-of select="Book/Book_ID"/>
<xsl:value-of select="Book/Book_Name"/>
</xsl:if>
</xsl:for-each-group>
<xsl:value-of select="count(distinct-values(Book_Data/Book_Entry/Book/Book_ID[sum(../../Sales/Quantity) != 0]))"/>
Проблема заключается в верхней секции правильно выводит только книга 1. Но прицеп считается как книги, и я не могу понять, как определить сумму для ссылки на Book_ID во внешнем контексте.
Пожалуйста, покажите ожидаемый результат (конечно, не означает, взгромоздить такие строки?). –