Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Xpath / 8 сообщений из 8, страница 1 из 1
08.08.2008, 17:10
    #35479091
Hug
Hug
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xpath
Добрый День, подскажите пожалуйста
Код: 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
11.08.2008, 11:16
    #35480805
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xpath
выражение "//table" - ищет элемент table во всем xml-документе.
поэтому иногда даже сложно утверждать какой элемент table буден найден первым по выражению "//table[1]".

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

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


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

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

Hug
[2] - ничего

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

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

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

почему?
...
Рейтинг: 0 / 0
20.08.2008, 21:35
    #35498032
Adam_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xpath
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
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Xpath / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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