powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Можно ли отсортировать в конструкции for-each в динамическом порядке.
25 сообщений из 82, страница 1 из 4
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34391334
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. если в переменой $fields у меня задан список полей для сортировки по возрастанию.
Я хочу не задавать заранее фиксированный набор order, а формировать список полей сортировки на лету, исходя из значения в $fields.

Т.е. например если у меня в fields хранится name, type, то сортировать по name, type, а если name - то только по name.
Список полей на этапе написания программы неизвестен.

Если такое невозможно, то чего тогда стоит XSLT как язык преобразования, если у него сортировка не работает!
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34392093
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в цикле, до вывода напиши
<xsl:sort select="name"/>
<xsl:sort select="type"/>
Это и будет сортировка сначало по полю name а затем по type
Если это у тебя значения атрибутов, то
<xsl:sort select="@name"/>
<xsl:sort select="@type"/>
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34395122
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSaв цикле, до вывода напиши
<xsl:sort select="name"/>
<xsl:sort select="type"/>
Это и будет сортировка сначало по полю name а затем по type
Если это у тебя значения атрибутов, то
<xsl:sort select="@name"/>
<xsl:sort select="@type"/>


Товарищ, вы не поняли.

Я заранее не знаю количество и набор полей, по которым я буду сортировать таблицу, допустим такой набор задается динамически.

И что же, мне для каждого случая писать шаблон, шаблонов не хватит!
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34396699
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<xsl:sort select="@*[name()=$param1]"/>
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34407227
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo<xsl:sort select="@*[name()=$param1]"/>

Это понятно, а если число колонок сортировки заранее неизвестно?
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34407768
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ну если ХСЛТ - язык манипуляции данными, то должна же быть сортировка в произвольном порядке, когда число ключей сортировки заранее неизвестно.

Или тогда это убогий язык сортировки.
Представьте что в SQL можно было бы сортировать только по одному или только по двум колонкам.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34407953
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нравиться не изучай... нытье твое уже надоело... этого нет того нет, тут не так , то не сяк... так любой язык разнести можно! Блин.
Представьте что в SQL можно было бы сортировать только по одному или только по двум колонкам.
Во-первых язык xsl еще достаточно молодой.
Во-вторых под него куча различных реализаций. и практически ниодна не соответсвует на 100% спецификации, так что если у тебя неработает что то в одном парсере, возможно заработает в другом. сдесь надо искать что для решения твоей задачи подходит лучше.
должна же быть сортировка в произвольном порядке, когда число ключей сортировки заранее неизвестно.
Подразумевается что ты обрабатываешь xml документ с известной структурой, количество ключей по скоким ты будешь сортировать таблицу ты задаешь САМ. И одному тебе изветно скоко ключей ты задашь.
сортировка в произвольном порядке
<xsl:sort select="@name"/>
<xsl:sort select="@type"/>
или
<xsl:sort select="@type"/>
<xsl:sort select="@name"/>
Сам задал порядок сортировки
Или тебе надо сортировать вообще в случайном порядке?
<xsl:sort select="@*"/>
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34408841
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSaНе нравиться не изучай... нытье твое уже надоело... этого нет того нет, тут не так , то не сяк... так любой язык разнести можно! Блин.
Представьте что в SQL можно было бы сортировать только по одному или только по двум колонкам.
Во-первых язык xsl еще достаточно молодой.
Во-вторых под него куча различных реализаций. и практически ниодна не соответсвует на 100% спецификации, так что если у тебя неработает что то в одном парсере, возможно заработает в другом. сдесь надо искать что для решения твоей задачи подходит лучше.
должна же быть сортировка в произвольном порядке, когда число ключей сортировки заранее неизвестно.
Подразумевается что ты обрабатываешь xml документ с известной структурой, количество ключей по скоким ты будешь сортировать таблицу ты задаешь САМ. И одному тебе изветно скоко ключей ты задашь.
сортировка в произвольном порядке
<xsl:sort select="@name"/>
<xsl:sort select="@type"/>
или
<xsl:sort select="@type"/>
<xsl:sort select="@name"/>
Сам задал порядок сортировки
Или тебе надо сортировать вообще в случайном порядке?
<xsl:sort select="@*"/>

Ничего не предполагается.
И ваш пример ничего не объясняет.

Предположим есть файл XML в котором хранится таблица Цена, Артикул, Количество, Название.
В этом же файле хранится порядок, в котором пользователь хочет видеть эту таблицу (пользователь выбирает порядок в форме (произвольный порядок, замечу)).


Например:
- Артикул, Товар
- Артикул, Цена
- Цена
- Цена, Артикул, Количество
- Цена, Артикул, Количество, Название
Я что, должен каждый раз переписывать код, на любой чих пользователя?

Я не ною - это базис. Если язык манипуляции данными не умеет сортировать в произвольном порядке, то что это за манипулятор данными?
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34408850
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока что мне не приходит в голову ничего лучшего, чем написать 20 раз <xsl:sort select="..."/>
<xsl:sort select="..."/>

И уже по ходу выключать ненужные сортировки. Неужели только так криво?
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34408898
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя проблема не в сортировке, а в том как написать шаблон так чтобы он сам брал из документа порядок сортировки и таблицу, а азтем сортировал таблицу с введенным порядком.
Как вариант сделать форму в которой пользователь будет выбирать поля по которым он хочет сортировать таблицу.
Ограничь ему число этих полей. Затем когда получишь xml документ организуй запрос на значения этих полей. К примеру
в xml:
<sort1>Цена</sort1>
<sort2>Кол-во</sort2>
<sort3>Вид</sort3>
<sort4></sort4>
В xsl напиши шаблон по тегам содержащим слово sort. Т.о ты обойдешь их все.А в шаблоне бери значение и из обрабатываемого тега и передовай его в виде значения параметра.
Где нить в другом месте где происходит сортировка сортируй таблицу по значению данного параметра
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34410041
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSaУ тебя проблема не в сортировке, а в том как написать шаблон так чтобы он сам брал из документа порядок сортировки и таблицу, а азтем сортировал таблицу с введенным порядком.
Как вариант сделать форму в которой пользователь будет выбирать поля по которым он хочет сортировать таблицу.
Ограничь ему число этих полей. Затем когда получишь xml документ организуй запрос на значения этих полей. К примеру
в xml:
<sort1>Цена</sort1>
<sort2>Кол-во</sort2>
<sort3>Вид</sort3>
<sort4></sort4>
В xsl напиши шаблон по тегам содержащим слово sort. Т.о ты обойдешь их все.А в шаблоне бери значение и из обрабатываемого тега и передовай его в виде значения параметра.
Где нить в другом месте где происходит сортировка сортируй таблицу по значению данного параметра

я именно так и делаю.
Как мен отсортировать таблицу так, чтобы порядок сортировки был таким: Цена, Кол-во, Вид
А если я заранее не знаю количество полей...

Вопрос остается прежним!
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34410052
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понимаешь, суса, ты зациклился на частном примере, а я не знаю заранее количество колонок в таблице и порядок сортировки - их мне передают в XML файле.

И что? Неужели язык манипуляции данных не может отсортировать данные в нужном мне порядке?!
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34410423
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinПонимаешь, суса,
Хоть бы с большой буквы написал
ты зациклился на частном примере
Если ты мог заметить я стараюсь либо конкретно отвечать на вопрос(если структура кода запутана), либо предлогаю такой вариант, где заменив слова проверки получается универсальный шаблон для всех задач такого типа.
я не знаю заранее количество колонок в таблице и порядок сортировки - их мне передают в XML файле.
Сам хоть примерную структуру xml представляешь?
к примеру:xml:
<root>
<tabl>
<stolb atrib='столбец1'>
<jacheyka>book1</jacheyka>
<jacheyka>book2</jacheyka>
<jacheyka>book3</jacheyka>
</stolb>
<stolb atrib='столбец2'>
<jacheyka>avtor1</jacheyka>
..
</stolb>
<stolb atrib='столбец3'>
<jacheyka>name1</jacheyka>
..
</stolb>
</tabl>
<sort1>столбец3</sort1>
<sort2></sort2>
</root>
Примерный алгоритм в xsl:
Обойти все можно примерно так, пишу словами в код переводи сам:
1. Проверяешь есть ли у тебя вообще таблица -если есть посчитать скоко в ней столбцов -(кол-во сортировок не может быть больше количества столбцов), перейти к пункту 2
2. Поиск по xml тегов с сортировкой, проверка на количество заполненный тегов сортировки, и соответсвии имен в них с именами столбцов которые надо сортировать. Вызвать шаблон сортировки (в качестве параметра передашь по какому столбцу сортировать)
3. Шаблон сортировки
<xsl:param name="param1"/>
<xsl:for-each select="$param1">
<xsl:sort select="$param1"/>
.. либо сохраняешь либо выводишь либо запоминаешь
</xsl:for-each>
вот и все
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34410732
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSa FixinПонимаешь, суса,
Хоть бы с большой буквы написал
ты зациклился на частном примере
Если ты мог заметить я стараюсь либо конкретно отвечать на вопрос(если структура кода запутана), либо предлогаю такой вариант, где заменив слова проверки получается универсальный шаблон для всех задач такого типа.
я не знаю заранее количество колонок в таблице и порядок сортировки - их мне передают в XML файле.
Сам хоть примерную структуру xml представляешь?
к примеру:xml:
<root>
<tabl>
<stolb atrib='столбец1'>
<jacheyka>book1</jacheyka>
<jacheyka>book2</jacheyka>
<jacheyka>book3</jacheyka>
</stolb>
<stolb atrib='столбец2'>
<jacheyka>avtor1</jacheyka>
..
</stolb>
<stolb atrib='столбец3'>
<jacheyka>name1</jacheyka>
..
</stolb>
</tabl>
<sort1>столбец3</sort1>
<sort2></sort2>
</root>
Примерный алгоритм в xsl:
Обойти все можно примерно так, пишу словами в код переводи сам:
1. Проверяешь есть ли у тебя вообще таблица -если есть посчитать скоко в ней столбцов -(кол-во сортировок не может быть больше количества столбцов), перейти к пункту 2
2. Поиск по xml тегов с сортировкой, проверка на количество заполненный тегов сортировки, и соответсвии имен в них с именами столбцов которые надо сортировать. Вызвать шаблон сортировки (в качестве параметра передашь по какому столбцу сортировать)
3. Шаблон сортировки
<xsl:param name="param1"/>
<xsl:for-each select="$param1">
<xsl:sort select="$param1"/>
.. либо сохраняешь либо выводишь либо запоминаешь
</xsl:for-each>
вот и все

Суса, ну как ты не понимаешь.
Вот тебе пример.
Мне нужно отсортировать например так Наименование Возр, Количество Возр.
Есть таблица
Вася 10
Петя 23
Петя 14
Вася 14
Саша 12
Саша 13
Сортирую сначала по наименованию, получаю:
Вася 10
Вася 14
Петя 23
Петя 14
Саша 12
Саша 13
Затем сортирую по количеству, получаю:
Вася 10
Саша 12
Саша 13
Вася 14
Петя 14
Петя 23

И что, это результат?
Мне нужно сортировать не последовательно по нескольким столбцам, а СРАЗУ по нескольким столбцам, понимаешь?

Т.е. результат должен быть:

Вася 10
Вася 14
Петя 14
Петя 23
Саша 12
Саша 13

А твой пример умеет сортировать только по одному столбцу.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34410813
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код покажи... только чур те куски которые как раз за сортировку отвечают, если у тебя там еще че то невтему, это не надо, и xml с этой таблицей
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34410848
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще sort вроде позволяет проводить операции над множествами, т.е
<xsl:sort select="Наименование Возр and Количество Возр"/>
если такое прокатит то можно и так
<xsl:param name="param1" select="Наименование Возр"/>
<xsl:param name="param2" select="Количество Возр"/>
<xsl:sort select="$param1 and $param2"/>
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34411101
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinПредставьте что в SQL можно было бы сортировать только по одному или только по двум колонкам.очень интересно посмотреть, как SQL может сортировать по неизвестному количеству полей. Покажи?
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34412764
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo FixinПредставьте что в SQL можно было бы сортировать только по одному или только по двум колонкам.очень интересно посмотреть, как SQL может сортировать по неизвестному количеству полей. Покажи?

Динамическое построение запроса в ран-тайме. Кстати, динамически формировать можно не только select-ы - xslt это тоже всего лишь текст ;-)
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34412839
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSaИ еще sort вроде позволяет проводить операции над множествами, т.е
<xsl:sort select="Наименование Возр and Количество Возр"/>
если такое прокатит то можно и так
<xsl:param name="param1" select="Наименование Возр"/>
<xsl:param name="param2" select="Количество Возр"/>
<xsl:sort select="$param1 and $param2"/>

Смущает это вроде.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34412843
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiG maXmo FixinПредставьте что в SQL можно было бы сортировать только по одному или только по двум колонкам.очень интересно посмотреть, как SQL может сортировать по неизвестному количеству полей. Покажи?

Динамическое построение запроса в ран-тайме. Кстати, динамически формировать можно не только select-ы - xslt это тоже всего лишь текст ;-)

Вернемся к сабжу. Неужели в XSLT нет возможности отсортировать выборку в произвольном порядке, или нужно на этапе написания кода заранее предусмотреть все варианты сортировки (что нереально порой).
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34414962
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinВернемся к сабжу. Неужели в XSLT нет возможности отсортировать выборку в произвольном порядке, или нужно на этапе написания кода заранее предусмотреть все варианты сортировки (что нереально порой).думаю в хслт возможностей для сортировки больше, чем в скл. Но предупреждаю! Искусственного интеллекта там НЕТ !!! Даже если тебе этого очень хочется. Он не сможет угадать твои мысли и самостоятельно сообразить, как сортировать. Ты должен дать чёткий алгоритм сортировки. Информационными технологиями можно реализовывать только чётко сформулированные алгоритмы. Ты не можешь заставить компьютер решить задачу «чтобы всё было кучеряво». Такие задачи решает только человек. Заруби себе это на носу. Давай алгоритм и будем смотреть, как его сделать.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34423152
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo FixinВернемся к сабжу. Неужели в XSLT нет возможности отсортировать выборку в произвольном порядке, или нужно на этапе написания кода заранее предусмотреть все варианты сортировки (что нереально порой).думаю в хслт возможностей для сортировки больше, чем в скл. Но предупреждаю! Искусственного интеллекта там НЕТ !!! Даже если тебе этого очень хочется. Он не сможет угадать твои мысли и самостоятельно сообразить, как сортировать. Ты должен дать чёткий алгоритм сортировки. Информационными технологиями можно реализовывать только чётко сформулированные алгоритмы. Ты не можешь заставить компьютер решить задачу «чтобы всё было кучеряво». Такие задачи решает только человек. Заруби себе это на носу. Давай алгоритм и будем смотреть, как его сделать.


Все это патетика, при всем уважении к автору. Потому что речь идет о конкретной задаче.
И вот эта конкретная задача!
Есть XML файл с неизвестным заранее составом полей.
Нужно выводить таблицу с полями, описанными в fields в порядке, описанном в orders.
Названия полей, их количество и количество полей сортировки заранее неизвестны.
Данные берутся из Outlook, список всех полей заранее составить нельзя, т.к. могут быть поля пользовательские.

Пример:

<root>
<lines>
<line>
<name type="S" sort="Иван Иванович">Иван Иванович</name>
<categories type="S" sort="руководители">руководители</categories>
<entryid type="S">000000009E5D45D68B62C44E8386C937DE30D92684852B00</entryid>
<class type="U">40</class>
</line>
<line>
<name type="S" sort="Елена Прекрасная">Елена Прекрасная</name>
<categories type="S" sort="девушки">девушки</categories>
<entryid type="S">000000009E5D45D68B62C44E8386C937DE30D926A4852B00</entryid>
<class type="U">40</class>
</line>
<line>
<name type="S" sort="Колька-ломщик">Колька-ломщик</name>
<categories type="S" sort="криминал">криминал</categories>
<entryid type="S">000000009E5D45D68B62C44E8386C937DE30D926C4852B00</entryid>
<class type="U">40</class>
</line>
<line>
<name type="S" sort="Кузьмич">Кузьмич</name>
<categories type="S" sort="быт">быт</categories>
<entryid type="S">000000009E5D45D68B62C44E8386C937DE30D926E4852B00</entryid>
<class type="U">40</class>
</line>
<line>
<name type="S" sort="Fixin">Fixin</name>
<categories type="S" sort="я">я</categories>
<entryid type="S">000000009E5D45D68B62C44E8386C937DE30D92604E74200</entryid>
<class type="U">40</class>
</line>
<line>
<name type="S" sort="Журнал Компьютерра">Журнал Компьютерра</name>
<categories type="S" sort="пресса">пресса</categories>
<entryid type="S">000000009E5D45D68B62C44E8386C937DE30D92624E74200</entryid>
<class type="U">40</class>
</line>
</lines>
<fields/>
<info>
<fields>
<_0>
<name type="S">name</name>
<src type="S">FileAs</src>
</_0>
<_1>
<name type="S">categories</name>
<src type="S">Categories</src>
</_1>
</fields>
<orders>
<_0>
<name type="S">categories</name>
<src type="S">Categories</src>
<order type="S">desc</order>
</_0>
<_1>
<name type="S">name</name>
<src type="S">FileAs</src>
<order type="S">asc</order>
</_1>
</fields>

</info>
</root>

То бишь вывести таблицу с полями name, categories, в порядке categories desc, names asc.
Т.е. сортировка сразу по двум ключам.

Пожалуйста, ваши идеи.

Вывод таблицы реализован здесь: http://www.sql.ru/forum/actualthread.aspx?tid=405106
Непонятки с сортировкой!!! Ведь я не знаю заранее, как нужно сортировать.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34423865
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не зашоривайся на одном единственном варианте. Задачи с неполностью определенными на этапе кодирования условиями (как у тебя) решаются обычно другими путями, чем полностью детерминированные (например когда есть
maXmo чёткий алгоритм сортировки

и т.п.)
Твоя задача это 100%-ный аналог проблемы "сортировка данных в запросе по неизвестному количеству полей".

Для набора данных с небольшим фиксированным кол-вом полей и допустимым ограничением "сортируем не более чем по N атрибутам" (сразу замечу в подавляющем (!) большинстве случаев такое ограничение более чем оправдано, т.к. сортировка набора по всем полям по большому счету просто бессмысленна) - в ORDER BY указываем N вычислимых выражений (CASE-ов или DECODE-ов для Oracle-а скажем), в зависимости от заданных параметров получаем сотрировку по тем или иным атрибутам. Но если честно это извращение Ты кстати насколько я понял хочешь именно по этому пути пойти ;-)

Есть еще один вариант - сортировка по одному составному атрибуту, обеспечивающему эквивалентную требуемой сотрировку. Такой атрибут включает в себя нормализованные значения всех атрибутов, по которым необходимо сортировать. Ну типа вместо сортировки по A, B, C сортируем по композитному строковому полю <нормализованное_A><нормализованное_B><нормализованное_C>. Правда это хорошо работает только если есть возможность предварительной процедурной обработки исходного набора (композитное поле надо еще сформировать - динамически в run-time-е ;-)) и если не требуется скажем сортировать в обратном порядке или сортировать действительные числа с дробной частью или строки очень большой длины, которые в сумме выходят за максимальную длину.
Кстати таким же образом можно реализовать динамическую группировку данных - подобный способ больше подходит именно для этой задачи.

Ну и наконец .... самый правильный вариант (и единственный работающий во ВСЕХ случаях) это

TiGДинамическое построение запроса в ран-тайме. Кстати, динамически формировать можно не только select-ы - xslt это тоже всего лишь текст ;-)

Решаемая проблема - это как раз тот случай когда построение запроса в run-time-е и динамический SQL просто диктуется самими условиями задачи ;-) А кроме того еще и выливается в более простой и понятный код, что для дальнейшего сопровождения является первоочередным условием.

PS И не забывай, что самый простой способ решения, обычно и самый правильный ;-)
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34427184
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
<xsl:sort select="*[local-name()=//orders/_0/name]/@sort" order="{//orders/_0/order}{'ending'}"/>
<xsl:sort select="*[local-name()=//orders/_1/name]/@sort" order="{//orders/_1/order}{'ending'}"/>
<xsl:sort select="*[local-name()=//orders/_2/name]/@sort" order="{//orders/_2/order}{'ending'}"/>
<xsl:sort select="*[local-name()=//orders/_3/name]/@sort" order="{//orders/_3/order}{'ending'}"/>
<xsl:sort select="*[local-name()=//orders/_4/name]/@sort" order="{//orders/_4/order}{'ending'}"/>
пяти полей для сортировки хватит за глаза, нужно больше – можешь добавить.
...
Рейтинг: 0 / 0
Можно ли отсортировать в конструкции for-each в динамическом порядке.
    #34428729
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiGНе зашоривайся на одном единственном варианте. Задачи с неполностью определенными на этапе кодирования условиями (как у тебя) решаются обычно другими путями, чем полностью детерминированные

...

PS И не забывай, что самый простой способ решения, обычно и самый правильный ;-)

Господи боже мой, ну что же вы за программисты?
Если человек хочет бегать, вы начнете ему объяснять с пеной у рта, что бегать - это плохо.
В любом другом языке такая задача решается элементарно.

А XSLT - это язык манипулирования данными и ничего лучше нет, чем:
1. Ограничить число сортировок.
2. Динамически менять КОД (!!! ужас) программы.
3. Извращаться, вычисляя еще и составной ключ.

Я конечно выберу вариант 1, поставив штук 100 сортировок, откуда я знаю, по какому признаку захочет пользователь сортировать.

Но вообще хочу сказать, что это ОЧЕНЬ УБОГО для языка, который декларирует себя, как язык сортировки данных.
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 1 из 4
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Можно ли отсортировать в конструкции for-each в динамическом порядке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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