powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / <xsl:sort> + по условию
12 сообщений из 12, страница 1 из 1
<xsl:sort> + по условию
    #34525732
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в зависимости от условия
нужно задавать разную сортировку по выбранным полям

если без условия один sort то работает
иначе нет
{$sortOrder} , {$sortDataType} заданны заранее и это без проблем

<xsl:choose>
<xsl:when test="//@FIELD='2'">
<xsl:sort select="@FIELD1" order="{$sortOrder}" data-type="{$sortDataType}" />
</xsl:when>

<xsl:when test="//@FIELD='3'">
<xsl:sort select="@FIELD2" order="{$sortOrder}" data-type="{$sortDataType}" />
</xsl:when>
......................

Помогите кто чем может
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34525743
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема? вроде же сам все написал?
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34525758
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Error Type:
msxml3.dll (0x80004005)
Keyword xsl:sort may not be used here.
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34525870
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сортировки автономно без условия работают?
каждая по отдельности?
Че то мне кажется что проблема не в условии....
:) Вспомнил... читай спецификацию:
Сортировка задается с помощью элементов xsl:sort, данных как непосредственный потомок элемента xsl:apply-templates или xsl:for-each
Вынси свою сортировку в шаблоны
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34525953
pikarya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<xsl:sort select="@FIELD{number(//@FIELD)-1}" order="{$sortOrder}" data-type="{$sortDataType}" />
а?
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34526001
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял
но и всё равно не работает
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34526081
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего не понял?
>>{$sortOrder} , {$sortDataType} заданны заранее и это без проблем
Должны быть теперь глобальными переменными. и значения должны быть заданы глобально. иначе будет ругаться
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<xsl:choose>
<xsl:when test="//@FIELD='2'">
<xsl:applay-templates select="чего нибудь">
<xsl:sort select="@FIELD1" order="{$sortOrder}" data-type="{$sortDataType}" />
</xsl:applay-templates>
</xsl:when>

<xsl:when test="//@FIELD='3'">
<xsl:applay-templates select="чего нибудь">
<xsl:sort select="@FIELD2" order="{$sortOrder}" data-type="{$sortDataType}" />
</xsl:applay-templates>
</xsl:when>
либо:
Код: plaintext
1.
2.
3.
<xsl:for-each select="по чему нибудь ">
<xsl:sort select="@FIELD{number(//@FIELD)-1}" order="{$sortOrder}" data-type="{$sortDataType}" />
</xsl:for-each>
2-е по идеи идет без выбора ориентируясь сразу по полученному значению. Так как твой выбор отличается лишь порядковым номером. причем на единицу меньше чем его значение.
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34526145
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет что то не то
не работает

<LEVEL FIELD="" FIELDTYPE="" DIR=""/>
<DETAILS REKLAMENAME="" REKLAMEDESC="" ANI="" START="" END="" STATUS="" DURATION="" />
<DETAILS REKLAMENAME="" REKLAMEDESC="" ANI="" START="" END="" STATUS="" DURATION="" />
<DETAILS REKLAMENAME="" REKLAMEDESC="" ANI="" START="" END="" STATUS="" DURATION="" />
<DETAILS REKLAMENAME="" REKLAMEDESC="" ANI="" START="" END="" STATUS="" DURATION="" />
<DETAILS REKLAMENAME="" REKLAMEDESC="" ANI="" START="" END="" STATUS="" DURATION="" />
<DETAILS REKLAMENAME="" REKLAMEDESC="" ANI="" START="" END="" STATUS="" DURATION="" />

@FIELD -это номер поля при показе из DETAILS
соответственно поля для сортировки
REKLAMENAME REKLAMEDESC ANI START END STATUS DURATION
только счёт начинается с 2
FIELDTYPE -text\number DIR-asc/des

как в зависимости от номера поля сортировать по соответствующему полю из DETAILS
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34526460
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34528438
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё нашёл как
всем спасибо
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34528855
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел.. молодец, а ответ то покажи , интересно ведь
...
Рейтинг: 0 / 0
<xsl:sort> + по условию
    #34529683
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<xsl:variable name="sort">
<xsl:choose>
<xsl:when test="//@FIELD='2'">REKLAMENAME</xsl:when>
<xsl:when test="//@FIELD='3'">PLACENAME</xsl:when>
<xsl:when test="//@FIELD='4'">ANI</xsl:when>
<xsl:when test="//@FIELD='5'">START</xsl:when>
..............................
</xsl:choose>
</xsl:variable>

по аналогии две другие переменные
для направления и типа сортировки


<xsl:for-each select="//DETAILS">
<xsl:sort select="@REKLAMENAME[$sort='REKLAMENAME']" order="{$Order}" data-type="{$DataType}"/>
<xsl:sort select="@PLACENAME[$sort='PLACENAME']" order="{$Order}" data-type="{$DataType}"/>
<xsl:sort select="@ANI[$sort='ANI']" order="{$Order}" data-type="{$DataType}"/>
<xsl:sort select="@START[$sort='START']" order="{$Order}" data-type="{$DataType}"/>
........................................
</xsl:for-each>

и без шаблонов


Всем спасибо за участие
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / <xsl:sort> + по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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