|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Есть xml: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Нужно вывести мкасимальный <title> для каждой <surname> (т.е. для xml выше должны получиться: <surname>Sur2</surname> - <title>C</title>, <surname>Sur1</surname> - <title>A</title>, <surname>Sur3</surname> - <title>E</title> ) У меня получилось только вот что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Но тут не получается сортировка, т.к. сортирует он, видимо, по первым записям в ключе. Наверное, решение какое-то тривиальное, и умещается в пару строк, но я "застрял". Помогите, пожалуйста, разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2006, 14:28 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Интересный подход. Обидно только что неправильный... Я бы сделал так... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Cheers Pete ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2006, 18:06 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Прошу прощения, я неточно сформулировал задачу. Точнее, в заголовке я ее сформулировал, а в теле сообщения в явной форме - нет. Нужно не только отобрать максимальные <title> для каждой <surname>, но и при выводе выводить записи, сортируя из по этому самому максимальному <title>. Т.е. в примере из первого сообщения на выходе должно быть: <surname>Sur1</surname> - <title>A </title> <surname>Sur2</surname> - <title> C </title> <surname>Sur3</surname> - <title> E </title> Отбор максимальных версий в моем варианте проходит, а вот сортировка - нет. В Вашем варианте сортировка тоже не производится - записи выводятся в порядке из первого появления в xml-файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2006, 19:05 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Аналогичная задача.. есть поток xml Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Задача 1. Отфильтровать поток по признаку key = 1 и param=a 2. Оставшиеся данные сгруппировать по признаку flag. Т.е. Берем первое значение flag - и выводим все записи с таким значением, второе и так. далее.. входной XML - большой - порядка 400-700 записей item/ посему оптимизация алгоритма важна... Реализация которая у меня есть выполняет только 2 задачу Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
PS к сожалению, ограничен только Transform Буду искренне признателен подсказке по решению... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2010, 20:04 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
toologic, не вкуриваю, что значит отфильтровать? так не катит? Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2010, 02:21 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Решение есть, но не оптимальное. Хотя если используете парсер от Microsoft то можно подшаманить ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2010, 03:16 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Придумал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2010, 14:04 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
не совсем корректно сформировал постановку задачи.. Назвать ее нужно так. Фильтрация и последующая группировка. в общих чертах - есть поток xml (например одежда: пальто, куртки, плащи, брюки и т.д.) Мне нужно 1. Отобрать вначале только 1)куртки 2) из нейлона 2. Отобранные данные сгруппировать по производителю, вывести название моделей. Мне видится это так (учитывайте, то я в xml+xsl ни бумбум, но из прочтенного и протестированного в vs 2008) сформировать темплейт, который отбирает только key=1 and param=b на эту выборку напустить темплейт, который сгруппирует данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2010, 19:12 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
toologicне совсем корректно сформировал постановку задачи.. Назвать ее нужно так. Фильтрация и последующая группировка...... Ты не мудри - ты пальцем покажи... Сделай типовой xml c исходным деревом и какой должен получится xml c конечным (или результирующий html, text). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2010, 19:23 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
_Vasilisk_, Браво! Ваш код отработал на 100% я чувствовал что решение простое и элегантное.. Хотя не думал, что вопрос формирование Выборки и дальнейшей группировки отобранного займет 5 дней.. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2010, 19:37 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
_Vasilisk_, Подскажите, в коде: Код: plaintext 1. 2. 3. 4. 5.
можно вставлять сортировку по любому тегу внутри item? Т.е. допустимо ли? Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2010, 12:41 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
toologic, xsl:sort может содержаться в элементах xsl:apply-templates или xsl:for-each ( Sorting ) Ставь сортировку при вызове шаблона ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2010, 13:10 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Накаркали Вы. Сегодня сам занимался подобной фигней, да еще и с выводом в непрямоугольную таблицу (это где colspan и rowspan != 1). Вы знаете какой это кайф создавать на XSLT непрямоугольные таблицы? Часа три бился, потом плюнул на все и вспомнил свое золотое правило - чего нельзя сделать за одно преобразование можно за два. Сформировал промежуточное дерево с нужной мне группировкой, а потом уже его вывел в таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2010, 23:42 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
_Vasilisk_Накаркали Вы. Сегодня сам занимался подобной фигней, да еще и с выводом в непрямоугольную таблицу (это где colspan и rowspan != 1). Вы знаете какой это кайф создавать на XSLT непрямоугольные таблицы? Часа три бился, потом плюнул на все и вспомнил свое золотое правило - чего нельзя сделать за одно преобразование можно за два. Сформировал промежуточное дерево с нужной мне группировкой, а потом уже его вывел в таблицуЗаитнтриговал. выкладывай задачку, не решу, хоть развлекусь. ИМХО любое преобразование можно сделать в один проход. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 01:27 |
|
Фильтрация и последующая сортировка
|
|||
---|---|---|---|
#18+
Давай. Есть XML такой структуры Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
ID в каждой таблице это уникальный идентификатор в данной таблице. Может идти в любом порядке. В Table2 теги TABLE1_ID, PERIOD, GROUP никак не коррелируют между собой. TABLE1_ID ссылается на запись в первой таблице, PERIOD, GROUP - перечислимые типы. В Table3 TABLE2_ID ссылка на запись из второй таблице, MONTH - может принимать значение от 1 до 12. На одну запись из второй таблицы может ссылаться не более 12 записей из третьей таблицы. Причем на одну запись из второй таблицы может ссылаться не более одной записи из третьей таблицы с конкретным месяцем. Теперь задача - сформировать HTML таблицу с полями Table1/NAME Table2/PERIOD Table2/GROUP Table3/Row[MONTH = 1]/DATA ... Table3/Row[MONTH = 1]/DATA последовательно сгруппированную (т.е. ячейки должны быть с соответствующим colspan) по полям NAME, PERIOD, GROUP ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 22:51 |
|
|
start [/forum/topic.php?fid=14&fpage=31&tid=1333065]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 456ms |
0 / 0 |