powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSL убрать дублирующие ноды при наличии двух ключей
5 сообщений из 5, страница 1 из 1
XSL убрать дублирующие ноды при наличии двух ключей
    #36169621
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<ROOT>
<A ID="1"  T="aaa" />
<A ID="2"  T="bbb" />
<A ID="3"  T="aaa" />
<A ID="1"  T="aaa" />
<A ID="2"  T="BBB" />
<A ID="1"  T="AAA" />
</ROOT>

как через XSL убрать дупликацию нодов
ключи параметр ID , T
с одним ключом понятно через KEY
а если два или больше

результат должен быть
Код: plaintext
1.
2.
3.
4.
5.
<ROOT>
<A ID="1"  T="aaa" />
<A ID="2"  T="bbb" />
<A ID="3"  T="aaa" />
</ROOT>


Спасибо
...
Рейтинг: 0 / 0
XSL убрать дублирующие ноды при наличии двух ключей
    #36169800
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
<xsl:if test="not(preceding-sibling::A[@ID = current()/@ID and @T = current()/@T])"

С уважением, Vasilisk
...
Рейтинг: 0 / 0
XSL убрать дублирующие ноды при наличии двух ключей
    #36170807
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из-за цикла
работает очень долго и очень долго
90 тыс записей

можно ли как то побыстрее сделать
...
Рейтинг: 0 / 0
XSL убрать дублирующие ноды при наличии двух ключей
    #36170929
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос по другому

можно ли в xsl:key вставить комбинированный ключ без повтора
а ключ будет представлять собой структуру самого нода

и как можно было бы пробежаться по этому key в цикле
...
Рейтинг: 0 / 0
XSL убрать дублирующие ноды при наличии двух ключей
    #36171212
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
<xsl:key name="key1" match="ROOT/A" use="concat(@ID ,'-' , @T)"/>
<xsl:variable name="U1"  select="ROOT/A[generate-id(.)=generate-id(key('key1',concat(@ID ,'-' , @T)))]"/>
<xsl:template match="ROOT">
<ROOT>
<xsl:copy-of select="$U1"/>
</ROOT>

вот так вроде работает

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


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