powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / убрать эл-ты с одинаковыми именами на XPath
15 сообщений из 15, страница 1 из 1
убрать эл-ты с одинаковыми именами на XPath
    #37395895
Петрушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно ли это в принципе? не прибегая к XSLT
1.0 приветствуется, можно 2.0 или расширения Xalan-C

то есть для
Код: plaintext
<x><a> 1 </a><a> 2 </a><b> 3 </b></x>
должно получится
Код: plaintext
<x><a> 1 </a><b> 3 </b></x>
то есть для каждого узла из его детей с повторяющимися именами оставить лишь первые. значения не важны.

еще раз повторюсь, надо на XPath

спасибо
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37396969
Alezzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю стоит копать в оси preceding-sibling, сравнивая имена узлов с предыдущими в сете.
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37397200
Петрушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alezzzzдумаю стоит копать в оси preceding-sibling, сравнивая имена узлов с предыдущими в сете.
такая мысля была, но как это сделать сразу - одним запросом на XPath?
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37397303
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрушка,

Бред:
Код: plaintext
/x/*[name()!=name(preceding-sibling::*[ 1 ])]
Не будет работать, если элементы c одинаковыми именами идут не по порядку.

Вообще, неясная формулировка. Что значит убрать?
XPath выдает набор узлов (в первой версии) или список (во второй версии). Следовательно, вопрос должен звучать так:

Выбрать с помощью XPath набор узлов такой, что...

А то что у Вас "должно получиться" - не есть набор узлов...
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37397959
Pasionario
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,
Убери
Код: plaintext
[ 1 ]
и должно работать как нужно
Код: plaintext
/x/*[name()!=name(preceding-sibling::*)]
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37397974
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pasionario,

будет тоже самое - специально поставил, т.к. люблю однозначность...
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398263
Pasionario
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

приведи пример
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398365
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pasionario,

какой?
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398381
Pasionario
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

авторНе будет работать, если элементы c одинаковыми именами идут не по порядку.
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398391
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pasionario,

в первом посте пример.
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398439
Pasionario
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

Код: plaintext
/x/*[name()!=name(preceding-sibling::*)]
Код: plaintext
1.
2.
3.
4.
<x>
  <a> 1 </a>
  <a> 2 </a>
  <b> 3 </b>
</x>
Будут выбраны: a1, b3

Код: plaintext
1.
2.
3.
4.
5.
<x>
  <a> 1 </a>
  <c> 4 </c>
  <a> 2 </a>
  <b> 3 </b>
</x>
Будут выбраны: a1, c4, b3
Если для последнего использовать выражение с предикатом [1], e.g.:
Код: plaintext
/x/*[name()!=name(preceding-sibling::*[ 1 ])]
будут выбраны все элементы: a1, c4, a2, b3
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398450
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pasionario,

А для такого?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<x>
  <a> 1 </a>
  <c> 4 </c>
  <a> 2 </a>
  <b> 3 </b>
  <a> 1 </a>
  <b> 3 </b>
</x>
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398451
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и такого?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<x>
	<a> 1 </a>
	<c> 4 </c>
	<c> 4 </c>
	<c> 4 </c>
	<c> 4 </c>
	<a> 2 </a>
	<b> 3 </b>
	<a> 1 </a>
	<b> 3 </b>
</x>
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398486
Pasionario
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

Вот я и просил пример :-) А то мне это было не очевидно.
...
Рейтинг: 0 / 0
убрать эл-ты с одинаковыми именами на XPath
    #37398498
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pasionario,

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


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