powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Передача параметра сортировки через командную строку
8 сообщений из 8, страница 1 из 1
Передача параметра сортировки через командную строку
    #38669806
axigreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, помогите пожалуйста разобраться. Использую xsltproc для преобразования. Параметром передаю имя поля для сортировки. В файле .xsl определяется параметр sort и далее в шаблоне пытаюсь использовать это значение, но не выходит:

Код: xml
1.
2.
3.
<xsl:apply-templates select="something" >
						<xsl:sort select="$sort" order="descending" />
					</xsl:apply-templates>



Узлы выводятся в document order, вместо сортировки по переданному значению.

В чём тут проблема?
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38670305
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
<xsl:sort select="{$sort}" order="descending" />

???
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38670860
axigreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таком виде xsltproc ругается "compilation error" из-за "Xpath error на {$sort}"
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38670898
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
<xsl:sort select="*[name() = $sort]" order="descending" />


Или local-name()
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38670920
axigreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот за этот вариант спасибо, сработало. было бы ещё здорово, если бы подсказали, с чем это связано; и там, и там Xpath выражение, параметр подставляется, но в последнем варианте это воспринимается как node-set, а в первом, как просто строка?
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38671036
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
axigreat,

$sort - это строка
name() - это функция, которая возвращает имя узла
*[name() = $sort] - выбирает набор узлов, у которых имя равно $sort
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38671201
axigreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вариантов в самом xsl преобразовать строку в набор узлов нету?
в exslt есть функция node-set(), которая это делает, либо я чего-то ещё не понял, так как у меня и с ней не вышло. В общем, Ваш вариант к решению задачи подошёл, я надеялся на какое-то преобразование типа.
...
Рейтинг: 0 / 0
Передача параметра сортировки через командную строку
    #38671480
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
node-set() преобразовіывает в набор узлов строку такого вида
Код: xml
1.
<A>1</A><B>5</B><C><D>0</D></C>


Т.е. это, фактически, парсер
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Передача параметра сортировки через командную строку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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