powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Xpath
8 сообщений из 8, страница 1 из 1
Xpath
    #35479091
Hug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hug
Гость
Добрый День, подскажите пожалуйста
Код: plaintext
1.
<xsl:for-each select="//table[tr[2]/td[1]/text()='Вылет']">
таких узла 2(<table>).
как обратиться конкретно к первому и конкретно ко второму
Код: plaintext
<xsl:for-each select="//table[tr[2]/td[1]/text()='Вылет'][1]/tr[position()>3]">
бежит у меня по всем tr этих table. А мне необходимо только по первому/
Как это сделать и почему [1] не работает?
...
Рейтинг: 0 / 0
Xpath
    #35480805
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выражение "//table" - ищет элемент table во всем xml-документе.
поэтому иногда даже сложно утверждать какой элемент table буден найден первым по выражению "//table[1]".

поэтому для четкой идентификации элемента Вам придется использовать абсолютный путь, например "/root/body/table[1]" (тогда может и [1] не понадобится).

и вообще, стиль обращения в элементам через "//" - не самый оптимальный...
...
Рейтинг: 0 / 0
Xpath
    #35481043
Hug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hug
Гость
спасибо большое.
не знал.
попробовал через абсолютный путь:
Код: plaintext
html/body/table/td/table/tr/td/table/tr/td/table/tr/td/table
все равно в конце 2 ноды.
и выцепить их по отдельности [1],[2] не получается
[1] - обе выбирает
[2] - ничего
...
Рейтинг: 0 / 0
Xpath
    #35481674
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hug
[1] - обе выбирает


приведите пример xml-файла (можно как вложение или кусочек содержимого тут).
и пример обращения из xsl (можно как вложение или кусочек содержимого тут).

выведите в месте обращения к table его position(). М.б. вы 2 раза обращаетесь к однму table?
если 2 раза один и тот же вызываете, то номер position() будет одинаковый.

Hug
[2] - ничего

точно. значит вы путь указываете правильно, но там нет 2го table или условие не срабатывает на него.

*только по примерам можно ответить.
...
Рейтинг: 0 / 0
Xpath
    #35482656
Hug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hug
Гость
Строю выражение в xpath билдере
Вызов из
xslt будет такой:
Код: plaintext
html/body/table/td/table/tr/td/table/tr/td/table/tr/td/table[ 1 \ 2 ]

ЗЫ Спасибо Вам
...
Рейтинг: 0 / 0
Xpath
    #35482758
Hug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hug
Гость
position() не удается вывести
...
Рейтинг: 0 / 0
Xpath
    #35486079
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugposition() не удается вывести

почему?
...
Рейтинг: 0 / 0
Xpath
    #35498032
Adam_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HugДобрый День, подскажите пожалуйста
Код: plaintext
1.
<xsl:for-each select="//table[tr[2]/td[1]/text()='Вылет']">
таких узла 2(<table>).
как обратиться конкретно к первому и конкретно ко второму
Код: plaintext
<xsl:for-each select="//table[tr[2]/td[1]/text()='Вылет'][1]/tr[position()>3]">
бежит у меня по всем tr этих table. А мне необходимо только по первому/
Как это сделать и почему [1] не работает?

а попробуйте такую запись

Код: plaintext
1.
<xsl:for-each select="(//table[tr[2]/td[1]/text()='Вылет'])[1]">
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Xpath
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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