powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Можно ли отсортировать в конструкции for-each в динамическом порядке.
7 сообщений из 82, страница 4 из 4
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34438143
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimzon
Тут встаёт вопрос производительности. Например мы пишем сервер приложений, обрабатывающий множество запросов от пользователей. При использовании макросов мы тратим время на парсинг строки в DOM. При использовании XSLT->XSLT мы тратим время на конструирование большого XSLT.
При модификации через DOM мы можем сделать что-то вроде:
Код: plaintext
1.
2.
concreteXSL = templateXSL.cloneNode(true); // Не надо лишний раз парсить
insertSortClauses(concreteXSL); // Просто вставим нужные xsl:sort-ы


Если использовать предложенный мной подход (с умом есессно ;) - то генерируемый xslt будет содержать единственный template отвечающий за сортировку, всю прочую логику выделять в отдельные шаблоны, да и сам он будет просто include-иться в основной xslt. Т.о. генерируемый xslt даже в плохих случаях размером вряд ли будет сильно отличаться от цифирки 1-3 кб (давайте возьмем N танков, нет N слишком много - давайте K ;-)))

TiG
4) Мелкософтовский сишный парсер вроде бы в свое время был одним из самых быстрых. Сейчас уже нет ?
В данном случае речь идёт не сколько о самом парсере сколько о XSLT-процессоре (компоненте котрый умеет выполнять XSLT) + скорости выполнения XPath
Например MSXML4 примерно в 2-3 раза быстрее MSXML3 за счёт индексирования XML и соотв. ускорения выполнения XPath
А MSXML из .NET 2.0 ещё быстрее за счёт JIT-компиляции, т.е. он генерирует из XSLT выполняемый код :) Более того этот код можно сбросить на винт в виде DLL.[/quot]

Спасибо за информацию, буду знать. Активно с xml/xslt/etc. не так уж часто приходится работать, но стараюсь по крайней мере быть в курсе.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34438281
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimzonИтак приступим


Товарищ димзон, я думал вы что-то конкретное скажете. Эх вы...
Вы меня разочаровали.

С XML я работаю непосредственно через DOM, поэтому спецсимволы будут обрабатываться корректно, к тому же названия полей - это идентификаторы(!), о каких спецсимволах речь.

Проблемы с производительностью я даже не рассматриваю - число строк не превышает 1000, т.к. это один экран веб-странички. Никто на один экран горы информации выплевывать не будет.

И не рассуждайте пожалуйста про конкатенацию строк - для 1С это стандартный метод и он, уж поверьте, оптимизирован на уровне движка. ;-) Не позорьтесь.

Я понимаю ваше желание досадить мне, но увы, ничего конкретного не прозвучало.

А факт остается фактом - авторы XSLT просто забыли про динамическую сортировку и кроме извращений, никак по другому ее не получить.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34438294
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiG dimzon
1) .... Надо генерировать XSLT аналогично тому как генерируются <xsl:sort>
2) Для удобства вместо хардкода текста XSLT в реальном приложении его проще вынести в ресурс или отдельный файл
3) Возможно(?) вместо использования макроса имеет смысл модифицировать XSL через DOM
4) Хорошо бы использовать более новые/быстрые версии XSLT-процессоров вместо MSXML3


1 + 2) Если генерировать текст XSLT, то смысла ограничивать себя нет - полностью юзать все преимущества. А именно иметь отдельный общий xslt, который преобразует исходный xml с описанием данных и порядка сортировки во второй xslt (рабочая трансформация), который уже будет оптимально сформирован под данную структуру xml. И одновременно решаем кроме проблемы производительности еще и проблему хард-кодинга и реюзинга ;-))
3) Если код несложный, то проще так. Через DOM и код чуть более сложный и работать помедленнее будет. А вообще лучше темплейты в таких случаях юзать - см. п.1-2.
4) Мелкософтовский сишный парсер вроде бы в свое время был одним из самых быстрых. Сейчас уже нет ?

Да это все понятно, но зачем для такой тривиальной задачи генерить XSLT? Согласитесь, это недоработка языка.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34438362
dimzon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fixin
С XML я работаю непосредственно через DOM, поэтому спецсимволы будут обрабатываться корректно, к тому же названия полей - это идентификаторы(!), о каких спецсимволах речь.
Блин, внимательно код читай, умник. Реальное место где реально в твоём коде ошибка. Опять же докажи !

Fixin
Проблемы с производительностью я даже не рассматриваю - число строк не превышает 1000, т.к. это один экран веб-странички. Никто на один экран горы информации выплевывать не будет.
Ещё раз повторяю - если подобный код работает на сервере то даже для маленьких страничек производительность важна.

Fixin
И не рассуждайте пожалуйста про конкатенацию строк - для 1С это стандартный метод и он, уж поверьте, оптимизирован на уровне движка. ;-) Не позорьтесь.
Ню-ню. Докажи
Пока что опозорился ты не зная такой элементарной вещи :)
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34438446
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinДа это все понятно, но зачем для такой тривиальной задачи генерить XSLT? Согласитесь, это недоработка языка.
Необходимость подобной динамической сортировки данных не так часто встречается. Обычно такая потребность реализуется клиентским интерфейсом. Ваш случай, например, первый когда я столкнулся с этим вопросом в приложении к обработке XML (а вот при разработке DB-приложений да, заметно чаще, ту же отчетность взять, и там прямая дорога в dynamic sql).

А XSLT, как и любой другой язык или средство разработки, разумеется имеет свои ограничения. Но и развивается ! Таки уже 2ая версия спецификации ;-)
Если вы считаете отсутствие динамической сортировки действительно большим и неоправданным ограничением для XSLT - внесите и свою лепту в его развитие, киньте предложение в мейл-лист разработчиков на w3c.org . Возможно действительно эта фича как раз то, чего многим не хватает для полного счастья ;-) А может наоборот, настолько редкая и невостребованная вещь, что ей одно место - нет не та,м где вы подумали, а в самописных функциях для разового использования ;-)
По крайней мере, я согласен с тем, что в xslt она будет смотреться намного более органично, чем скажем FOR-циклы, которых по первости сильно не хватает многим процедурно/объектно-ориентированным разработчикам

PS Предлагаю топик прикрыть, поскольку он явно переходит в непродуктивную плоскость. Тов. Fixin убедился в том, что динамической сортировки, кою он хочет видеть в XSLT, там нет. А мы убедились в том, что для тов. Fixin-а XSLT попал в разряд "ошибок природы". Переубеждать его в этом смысла смысла не вижу ("Каждый имеет право на своё неправильное мнение" ;-) Зато время сбережем для более важных дел, чем раздувание этого топика еще на столько же страниц.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34438562
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiG FixinДа это все понятно, но зачем для такой тривиальной задачи генерить XSLT? Согласитесь, это недоработка языка.
Необходимость подобной динамической сортировки данных не так часто встречается. Обычно такая потребность реализуется клиентским интерфейсом. Ваш случай, например, первый когда я столкнулся с этим вопросом в приложении к обработке XML (а вот при разработке DB-приложений да, заметно чаще, ту же отчетность взять, и там прямая дорога в dynamic sql).

А XSLT, как и любой другой язык или средство разработки, разумеется имеет свои ограничения. Но и развивается ! Таки уже 2ая версия спецификации ;-)
Если вы считаете отсутствие динамической сортировки действительно большим и неоправданным ограничением для XSLT - внесите и свою лепту в его развитие, киньте предложение в мейл-лист разработчиков на w3c.org . Возможно действительно эта фича как раз то, чего многим не хватает для полного счастья ;-) А может наоборот, настолько редкая и невостребованная вещь, что ей одно место - нет не та,м где вы подумали, а в самописных функциях для разового использования ;-)
По крайней мере, я согласен с тем, что в xslt она будет смотреться намного более органично, чем скажем FOR-циклы, которых по первости сильно не хватает многим процедурно/объектно-ориентированным разработчикам

PS Предлагаю топик прикрыть, поскольку он явно переходит в непродуктивную плоскость. Тов. Fixin убедился в том, что динамической сортировки, кою он хочет видеть в XSLT, там нет. А мы убедились в том, что для тов. Fixin-а XSLT попал в разряд "ошибок природы". Переубеждать его в этом смысла смысла не вижу ("Каждый имеет право на своё неправильное мнение" ;-) Зато время сбережем для более важных дел, чем раздувание этого топика еще на столько же страниц.

Слова не юноши, но мужа!
Действительно, тема исчерпала себя. ;-)
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34440194
dimzon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оффтоп
Подведение итогов дуэли читаем тут
...
Рейтинг: 0 / 0
7 сообщений из 82, страница 4 из 4
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Можно ли отсортировать в конструкции for-each в динамическом порядке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]