powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Упрощение многоэтажных XPATH
5 сообщений из 5, страница 1 из 1
Упрощение многоэтажных XPATH
    #37212671
Гиршман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, есть xpath

/
Код: plaintext
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.
select
[
   count(type/subtype/detail
     [
        additional/notes
          [
             ...very long filter
          ]
     ]
   ) =2 
   and 
   (type/subtype/detail
     [
        additional/notes
          [
             ...very long filter (same with first)
          ]
     ]
   )[1] = 
   (type/subtype/detail
     [
        additional/notes
          [
             ...very long filter (same with first)
          ]
     ]
   )[2]
]

т.е. нужно выбрать такой документ, у которого в notes 2 и только 2 одинаковых элемента.

Можно ли упростить фильтр?
...
Рейтинг: 0 / 0
Упрощение многоэтажных XPATH
    #37212890
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гиршману которого в notes 2 и только 2 одинаковых элемента1. Что понимается под 2 одинаковых элемента - 2 тега? 2 значения? 2 тега, у которых все дочерние элементы равны? или еще что?
2. Приведи notes c содержимым... что бы теги самому не придумывать.
3. Ну и желательно привести filter - именно его ведь надо упростить? Проще отталкиваться уже от написанного.
...
Рейтинг: 0 / 0
Упрощение многоэтажных XPATH
    #37213789
Гиршман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
/Trade
[
	count(
		Instrument/Detail/Leg
		[
			FlowList/Flow
			[
				not(@FlowType='T1' and @FlowSubType='T2')
			]
		]
	)=2
	and
	(Instrument/Detail/Leg
		[
			FlowList/Flow
			[
				not(@FlowType='T1' and @FlowSubType='T2')
			]
		])[1]/Currency/@Id
	=
	(Instrument/Detail/Leg
		[
			FlowList/Flow
			[
				not(@FlowType='T1' and @FlowSubType='T2')
			]
		])[2]/Currency/@Id

]
...
Рейтинг: 0 / 0
Упрощение многоэтажных XPATH
    #37214281
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гиршман,

Да уж... Как сравниваются элементы, теперь понятно.
Но все равно не понятен замысел. Не будем забегать глубоко, рассмотрим эту часть:
Код: plaintext
count(Instrument/Detail/Leg[...])= 2 
Здесь условие будет истинным, если будет два Leg , не просто в Detail , а во всей мешанине из Instrument/Detail/Leg - смысл этого не понятен...
Во-вторых, почему обязательно надо использовать один XPath. Где он используется в XSL ?
В-третьих, если XSL, то думаю, помог бы ключ (<xsl:key>) по Flow , а возможно еще и ключ по Leg
...
Рейтинг: 0 / 0
Упрощение многоэтажных XPATH
    #37214292
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

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


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