powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Номер элемента ( position() )
12 сообщений из 12, страница 1 из 1
Номер элемента ( position() )
    #38880118
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья!

Запутался. Скажите - position() может возвращать номер позиции не текущего а какого-то другого элемента?

Например нужный мне элемент я нахожу через xpath:
ancestor::content/descendant::*[name()='idinfo' and @id='"id-8989"']

как мне узнать его позицию?
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880210
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
ancestor::content/descendant::*[name()='idinfo' and @id='"id-8989"']/position()
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880215
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позиция - это порядковый номер элемента в списке. Т.е. нужно определить и искомый элемент и список. Каким списком Вы оперируете здесь?

Ну и вопрос. Вы это
andrei77ancestor::content/descendant::*[name()='idinfo' and @id='"id-8989"']пишите осознано? Или Вы не знаете, что можно так
Код: xml
1.
../name[@id='"id-8989"']
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880253
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
а у вас так работает?

у меня вот даже так не работает :
./position()
так тоже не работает
../position()

только когда пишешь
position() - выдает просто позицию текущей node
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880254
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
это просто запись, плод долгих попыток сделать нужный xpath )))
idinfo это имя самого тега, а вот id может повторяться в документе, а нужно именно с этим именем чтобы было совпадение.

А определить нужно только позицию искомого элемента - номер
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880256
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrei77Antonariy,
а у вас так работает?

у меня вот даже так не работает :
./position()
так тоже не работает
../position()

только когда пишешь
position() - выдает просто позицию текущей nodeтогда так:

Код: xml
1.
2.
3.
4.
5.
<xsl:apply-templates mode="pos" select="ancestor::content/descendant::*[name()='idinfo' and @id='id-8989']"/>

<xsl:template match="*" mode="pos">
    <xsl:value-of select="position()"/>
</xsl:template>
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880257
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

спасибо! но к сожалению у меня есть ограничение на то, чтобы ввести одно xpath выражение. И вообщем вопрос таков - могу я так построить xpath чтобы он мне вернул позицию не текущего, а любой другой node
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880259
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrei77у меня вот даже так не работает :Что значит "не работает"? Выводит надпись "ушел за пивом"?
andrei77А определить нужно только позицию искомого элемента - номерПозиция в чем? Что у Вас "список элементов"?
Antonariyтогда так:Если id уникален, то выдаст 1. Если нет, то последовательность 1, 2, 3...
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880261
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот жеж...

Тогда что-то вроде count(ancestor::content/descendant::*[name()='idinfo' and @id='"id-8989"']/preceding-sibling::*)
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880265
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

немного не доконца сформулировал задачу подумав о том, что это не столь важно

поясню. у меня есть примерно такой xml:

xml<content>
...
<test id="id-8989"/>
..
<procedure id="004">
<idinfo id="id-8988"/>
<idinfo id="id-8989"/>
<idinfo id="id-8990"/>
<procedure id="007">
<idinfo id="id-8991"/>
<idinfo id="id-8992"/>
<idinfo id="id-8993"/>

Условия такие что шаблон применяется из <test id="id-8989"/> то есть это текущая нода

далее мне нужно найти позицию procedure в соотвествии с id.
то есть логически я бы писал так :
ancestor::content/descendant::*[name()='idinfo' and @id='"id-8989"']/../position()
но в ответ значение в результате пустое
если ввести так: ancestor::content/descendant::*[name()='idinfo' and @id='"id-8989"']/../@id
то он выдаст правильный id procedure, но мне нужен номер его позиции
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880278
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Отлично, я немного поправил и работает как я и планировал) спасибо! как могу отблагодарить?
...
Рейтинг: 0 / 0
Номер элемента ( position() )
    #38880290
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на здоровье:)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Номер элемента ( position() )
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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