Возникли сложности при реализации такой задачи:
есть интернет-магазин, и фильтр по свойствам и доп.свойствам товаров.
Есть пожелание заказчика: если мы выбрали в фильтре какое-то значение, допустим по конкретному производителю, то после нажатия кнопки "применить" из списков всех других свойств и доп.свойств должны исчезнуть варианты, не удовлетворяющие нашему выбору.
То есть, например, если у нас в группе есть Жигули красные и синие, и мерседесы синие и белые, то изначальный список цветов должен быть "красный, белый, синий" а при выборе марки "Жигули" в списке цветов должны оставаться только "красный, синий", а белого быть не должно.
На первый взгляд проблема решается при обработке элементов списка, если сделать перед выводом проверку (например для доп.свойств)
<xsl:if test="/shop/item/property[@id = xx and value = yy]/node()">
т.е. если среди товаров есть хотя бы один, содержащий нужное значение для нужного свойства, то это значение надо выводить.
Но. Все удовольствие от такого простого решения обламывает пагинация.
Если у нас в первой десятке товаров нету ни одного товара красного цвета, то красный цвет на первой странице в список не попадет.
А если во второй десятке товаров есть товары красного цвета - то на второй странице красный цвет в списке появится.
Но пользователь-то этого не знает! И не увидев после применения фильтра красного цвета в списке расстроенный уйдет.
Пока на ум приходит только одно решение - передавать в xml всю выборку товаров, сколько бы их не было, а пагинацию делать искуственно, ограничивая вывод товаров по position().
Но такое решение не рационально, с точки зрения нагрузки.
В связи с чем вопрос: а нельзя ли как-то передавать в xml список значений свойств и допсвойств удовлетворяющих фильтру по всей выборке, а не только по 10 отображаемым на текущей странице товарам?