|
|
|
Можно ли отсортировать в конструкции for-each в динамическом порядке.
|
|||
|---|---|---|---|
|
#18+
dimzon Тут встаёт вопрос производительности. Например мы пишем сервер приложений, обрабатывающий множество запросов от пользователей. При использовании макросов мы тратим время на парсинг строки в DOM. При использовании XSLT->XSLT мы тратим время на конструирование большого XSLT. При модификации через DOM мы можем сделать что-то вроде: Код: plaintext 1. 2. Если использовать предложенный мной подход (с умом есессно ;) - то генерируемый 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. не так уж часто приходится работать, но стараюсь по крайней мере быть в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 16:51 |
|
||
|
Можно ли отсортировать в конструкции for-each в динамическом порядке.
|
|||
|---|---|---|---|
|
#18+
dimzonИтак приступим Товарищ димзон, я думал вы что-то конкретное скажете. Эх вы... Вы меня разочаровали. С XML я работаю непосредственно через DOM, поэтому спецсимволы будут обрабатываться корректно, к тому же названия полей - это идентификаторы(!), о каких спецсимволах речь. Проблемы с производительностью я даже не рассматриваю - число строк не превышает 1000, т.к. это один экран веб-странички. Никто на один экран горы информации выплевывать не будет. И не рассуждайте пожалуйста про конкатенацию строк - для 1С это стандартный метод и он, уж поверьте, оптимизирован на уровне движка. ;-) Не позорьтесь. Я понимаю ваше желание досадить мне, но увы, ничего конкретного не прозвучало. А факт остается фактом - авторы XSLT просто забыли про динамическую сортировку и кроме извращений, никак по другому ее не получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 17:22 |
|
||
|
Можно ли отсортировать в конструкции for-each в динамическом порядке.
|
|||
|---|---|---|---|
|
#18+
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? Согласитесь, это недоработка языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 17:25 |
|
||
|
Можно ли отсортировать в конструкции for-each в динамическом порядке.
|
|||
|---|---|---|---|
|
#18+
Fixin С XML я работаю непосредственно через DOM, поэтому спецсимволы будут обрабатываться корректно, к тому же названия полей - это идентификаторы(!), о каких спецсимволах речь. Блин, внимательно код читай, умник. Реальное место где реально в твоём коде ошибка. Опять же докажи ! Fixin Проблемы с производительностью я даже не рассматриваю - число строк не превышает 1000, т.к. это один экран веб-странички. Никто на один экран горы информации выплевывать не будет. Ещё раз повторяю - если подобный код работает на сервере то даже для маленьких страничек производительность важна. Fixin И не рассуждайте пожалуйста про конкатенацию строк - для 1С это стандартный метод и он, уж поверьте, оптимизирован на уровне движка. ;-) Не позорьтесь. Ню-ню. Докажи Пока что опозорился ты не зная такой элементарной вещи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 17:40 |
|
||
|
Можно ли отсортировать в конструкции for-each в динамическом порядке.
|
|||
|---|---|---|---|
|
#18+
FixinДа это все понятно, но зачем для такой тривиальной задачи генерить XSLT? Согласитесь, это недоработка языка. Необходимость подобной динамической сортировки данных не так часто встречается. Обычно такая потребность реализуется клиентским интерфейсом. Ваш случай, например, первый когда я столкнулся с этим вопросом в приложении к обработке XML (а вот при разработке DB-приложений да, заметно чаще, ту же отчетность взять, и там прямая дорога в dynamic sql). А XSLT, как и любой другой язык или средство разработки, разумеется имеет свои ограничения. Но и развивается ! Таки уже 2ая версия спецификации ;-) Если вы считаете отсутствие динамической сортировки действительно большим и неоправданным ограничением для XSLT - внесите и свою лепту в его развитие, киньте предложение в мейл-лист разработчиков на w3c.org . Возможно действительно эта фича как раз то, чего многим не хватает для полного счастья ;-) А может наоборот, настолько редкая и невостребованная вещь, что ей одно место - нет не та,м где вы подумали, а в самописных функциях для разового использования ;-) По крайней мере, я согласен с тем, что в xslt она будет смотреться намного более органично, чем скажем FOR-циклы, которых по первости сильно не хватает многим процедурно/объектно-ориентированным разработчикам PS Предлагаю топик прикрыть, поскольку он явно переходит в непродуктивную плоскость. Тов. Fixin убедился в том, что динамической сортировки, кою он хочет видеть в XSLT, там нет. А мы убедились в том, что для тов. Fixin-а XSLT попал в разряд "ошибок природы". Переубеждать его в этом смысла смысла не вижу ("Каждый имеет право на своё неправильное мнение" ;-) Зато время сбережем для более важных дел, чем раздувание этого топика еще на столько же страниц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 17:58 |
|
||
|
Можно ли отсортировать в конструкции for-each в динамическом порядке.
|
|||
|---|---|---|---|
|
#18+
TiG FixinДа это все понятно, но зачем для такой тривиальной задачи генерить XSLT? Согласитесь, это недоработка языка. Необходимость подобной динамической сортировки данных не так часто встречается. Обычно такая потребность реализуется клиентским интерфейсом. Ваш случай, например, первый когда я столкнулся с этим вопросом в приложении к обработке XML (а вот при разработке DB-приложений да, заметно чаще, ту же отчетность взять, и там прямая дорога в dynamic sql). А XSLT, как и любой другой язык или средство разработки, разумеется имеет свои ограничения. Но и развивается ! Таки уже 2ая версия спецификации ;-) Если вы считаете отсутствие динамической сортировки действительно большим и неоправданным ограничением для XSLT - внесите и свою лепту в его развитие, киньте предложение в мейл-лист разработчиков на w3c.org . Возможно действительно эта фича как раз то, чего многим не хватает для полного счастья ;-) А может наоборот, настолько редкая и невостребованная вещь, что ей одно место - нет не та,м где вы подумали, а в самописных функциях для разового использования ;-) По крайней мере, я согласен с тем, что в xslt она будет смотреться намного более органично, чем скажем FOR-циклы, которых по первости сильно не хватает многим процедурно/объектно-ориентированным разработчикам PS Предлагаю топик прикрыть, поскольку он явно переходит в непродуктивную плоскость. Тов. Fixin убедился в том, что динамической сортировки, кою он хочет видеть в XSLT, там нет. А мы убедились в том, что для тов. Fixin-а XSLT попал в разряд "ошибок природы". Переубеждать его в этом смысла смысла не вижу ("Каждый имеет право на своё неправильное мнение" ;-) Зато время сбережем для более важных дел, чем раздувание этого топика еще на столько же страниц. Слова не юноши, но мужа! Действительно, тема исчерпала себя. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 18:27 |
|
||
|
|

start [/forum/topic.php?fid=14&gotonew=1&tid=1334364]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
280ms |
get topic data: |
14ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 617ms |

| 0 / 0 |
