Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1] / 7 сообщений из 7, страница 1 из 1
31.07.2011, 23:23
    #37374490
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
Нужна помощь в оптимизации следующего XPath запроса: following::tag2/tag3[following::end/@id=1]

Пример для экспериментов:
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<?php
    $xml = "<?xml version='1.0' encoding='UTF-8'?>
<test>
  <p>
    <tag2>
      <tag3>test2</tag3>
    </tag2>
  </p>
  <tag2>
    <tag3>test2</tag3>
  </tag2>
  <beg id='1'/>
  <p>
    <tag2>test2</tag2>
  </p>
  <tag2>
    <tag3>test2</tag3>
  </tag2>
  <p>
    <tag2>
      <tag3>test2</tag3>
    </tag2>
    <tag2>
      <tag3>test2</tag3>
    </tag2>
    <end id='1'/>
    <tag2>
      <tag3>test2</tag3>
    </tag2>
  </p>
  <beg id='2'/>
  <tag2>
    <tag3>test2</tag3>
  </tag2>
  <end id='2'/>
  <p />
</test>";
    $dom =  new  DomDocument();
    $dom->loadXML($xml);
    $xpath =  new  DomXPath($dom);
   
    $tag1 = $dom->getElementsByTagName("beg")->item( 0 );
     echo  $xpath->query("following::tag2/tag3[following::end/@id=1]", $tag1)->length;
?>
...
Рейтинг: 0 / 0
23.09.2011, 16:45
    #37453906
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
NT Man,

а что получить то хотите?

сам xpath following::tag2/tag3[following::end/@id=1] весьма неоднозначен, т.к. он возвращает все tag3 до себя... а это можно записать как-то так //end[@id=1]/preceding::tag3
...
Рейтинг: 0 / 0
23.09.2011, 18:52
    #37454193
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
Цель между тегами beg и end находить вхождения tag2/tag3, причем пар beg и end может быть несколько. У каждой пары beg и end одинаковый id.
...
Рейтинг: 0 / 0
26.09.2011, 11:42
    #37455640
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
NT Man,

думаю, ваш XPath выглядит так, если мы обходим tag3:
//beg[@id='1']/following::tag3[parent::tag2 and following::end[@id='1']]

либо так, если обходим tag2:
//beg[@id='1']/following::tag2[tag3 and following::end[@id='1']]
...
Рейтинг: 0 / 0
26.09.2011, 13:09
    #37455843
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
NT Man,

//tag2/tag3[preceding::beg/@id=following::end/@id]
...
Рейтинг: 0 / 0
17.10.2011, 08:30
    #37484539
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
refreg,

А как в Вашем случае узнать к какой конкретно паре относятся tag2/tag3?
Т.е. Вы красиво получаете вобще все tag2/tag3 для всех beg и end, но нам надо еще знать кто к какому id относиться.
...
Рейтинг: 0 / 0
17.10.2011, 10:33
    #37484658
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1]
NT Man,

>А как в Вашем случае узнать к какой конкретно паре относятся tag2/tag3?
у тега можно спросить preceding::beg/@id , но да, раком через Париж
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Нужна помощь в оптимизации XPath запроса: following::tag2/tag3[following::end/@id=1] / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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