Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Передача параметра сортировки через командную строку / 8 сообщений из 8, страница 1 из 1
15.06.2014, 19:27
    #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
16.06.2014, 13:11
    #38670305
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача параметра сортировки через командную строку
Код: xml
1.
<xsl:sort select="{$sort}" order="descending" />

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


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

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


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


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