powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Динамическая сортировка
3 сообщений из 3, страница 1 из 1
Динамическая сортировка
    #39457785
DymSig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые!

Есть XML:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" encoding="utf-8"?>
<TABLE>
    <ROW>
        <FIO>Иванова А.И.</FIO>
        <JOB>Сталевар</JOB>
        <SEX>0</SEX>
    </ROW>
    <ROW>
        <FIO>Петров Х.З.</FIO>
        <JOB>Инженер</JOB>
        <SEX>1</SEX>
    </ROW>
    <ROW>
        <FIO>Сидоров Т.Х.</FIO>
        <JOB>Мастер</JOB>
        <SEX>1</SEX>
    </ROW>
    <ROW>
        <FIO>Пупкина В.В.</FIO>
        <JOB>Кузнец</JOB>
        <SEX>0</SEX>
    </ROW>
</TABLE>



Есть XSLT-преобразование, куда при трансформации передается параметром фрагмент XML с некоторыми настройками:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    exclude-result-prefixes="msxsl">

    <xsl:param name="p0">
        <!--Приходит, например, вот такой фрагмент XML:
        <field name="SEX" data-type='number' order='ascending'></field>
        Естественно, имя, тип и порядок могут быть другие
        -->        
    </xsl:param>
    

    <xsl:template match="/">
        <xsl:apply-templates select="//ROW">
            <!--Как динамически сформировать эту фразу:
            <xsl:sort select='SEX' order='ascending' data-type='number'/>
            -->
        </xsl:apply-templates>        
    </xsl:template>

    <xsl:template match="ROW">
        <!--...-->
    </xsl:template>
</xsl:stylesheet>



Можно ли каким-то образом динамически сформировать фразу "sort " при вызове "apply-templates"?
...
Рейтинг: 0 / 0
Динамическая сортировка
    #39457812
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
<xsl:sort select="{$p0/field@name}" order='{$p0/field@order}' data-type='{$p0/field@data-type}'/>

Проверьте, возможно, вместо {$p0/field@name} нужно писать {$p0@name}
...
Рейтинг: 0 / 0
Динамическая сортировка
    #39458130
DymSig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Спасибо, с типом и порядком получилось, а вот c атрибутом select нет, студия подчеркивает и трансформация не проходит.
Пришлось сделать вот так:
Код: xml
1.
<xsl:sort select='*[name()=$p0/@name]' order='{$p0/@order}' data-type='{$p0/@data-type}'/>
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Динамическая сортировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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