powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:key возвращает все содержание родительского тэга
8 сообщений из 8, страница 1 из 1
xsl:key возвращает все содержание родительского тэга
    #38932837
Добрый день.

Подскажите пожалуйста, как можно решить задачу:
есть 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.
26.
27.
28.
<?xml version="1.0" encoding="utf-8"?>
<lines>
  <line>
    <sku>A02</sku>
    <qty>11</qty>
    <orderNr>N02</orderNr>
  </line>
  <line>
    <sku>A01</sku>
    <qty>11</qty>
    <orderNr>N01</orderNr>
  </line>
  <line>
    <sku>A02</sku>
    <qty>11</qty>
    <orderNr>N01</orderNr>
  </line>
  <line>
    <sku>A01</sku>
    <qty>11</qty>
    <orderNr>N02</orderNr>
  </line>
  <line>
    <sku>A01</sku>
    <qty>11</qty>
    <orderNr>N01</orderNr>
  </line>
</lines>


Хочу сгруппировать по тэгу orderNr для этого пишу такое преобразование:
Код: xml
1.
2.
3.
4.
5.
6.
7.
  
<xsl:key name="key1" match="lines/line" use="orderNr" />
<!-- ...   здесь формирование выходной структуры ... -->
<!-- выведем для проверки значение ключа -->
            <xsl:element name="key">
              <xsl:value-of select="key('key1', orderNr)"/>
            </xsl:element>


в результате в тэге key выводится значение всех 3-х полей родительского тэга line

Заранее благодарен.
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933078
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Меньшиковв результате в тэге key выводится значение всех 3-х полей родительского тэга lineА, что ожидалось?
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933107
Ожидалось содержимое тэга orderNr
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933124
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир МеньшиковОжидалось содержимое тэга orderNrТогда вместоВладимир Меньшиков
Код: xml
1.
<xsl:value-of select="key('key1', orderNr)"/>

просто писать
Код: xml
1.
<xsl:value-of select="orderNr"/>
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933204
Извините, по все видимости дал неполное описание задачи.
Я хочу группировать записи по тэгу orderNr,
когда увидел, что группировки не происходит, решил посмотреть что выводит xsl:key, и увидел, что вместо значения из тэга orderNr, key содержит значения всех тэгов из родительского.
Вопрос как в key передать значение только одного тэга, а именно orderNr.
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933275
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир МеньшиковВопрос как в key передать значение только одного тэга, а именно orderNr.
Владимир Меньшиков
Код: xml
1.
 <xsl:value-of select="key('key1', orderNr)"/>


Владимир МеньшиковЯ хочу группировать записи по тэгу orderNr,И? Что будете дальше с ними делать?

Все, что вы хотели знать про группировку, но стеснялись спросить
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933301
Спасибо, за ссылку, я это уже читал, но во всех примерах, что я нашел, используется во входном файле конструкция типа
Код: xml
1.
2.
3.
4.
<line orderNr="N02">
    <sku>A02</sku>
    <qty>11</qty>
  </line>


А не такая структура, как у меня, тем не менее вопрос решен.
Код: xml
1.
2.
3.
4.
5.
6.
<xsl:key name="key1" match="lines/line" use="orderNr" />
<!-- ...   здесь формирование выходной структуры ... -->
<!-- выведем для проверки значение ключа -->
            <xsl:element name="key">
              <xsl:value-of select="key('key1', orderNr)/orderNr"/>
            </xsl:element>


получаю то, что нужно.
...
Рейтинг: 0 / 0
xsl:key возвращает все содержание родительского тэга
    #38933323
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этоВладимир Меньшиков
Код: xml
1.
<xsl:value-of select="key('key1', orderNr)/orderNr"/>

полностью эквивалентно вот этому
Код: xml
1.
<xsl:value-of select="orderNr"/>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:key возвращает все содержание родительского тэга
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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