Конструктор XPath: упрощение генерируемых значений

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 857
Баллы
113
Во-первых, конечно, спасибо за конструктор выражений XPath - вначале отнёсся к нему скептически (я руками в браузере их готовлю обычно), но попробовал и зашло (правда, хотелось бы чтоб пофиксили противный баг)!

А теперь ближе к телу:
  1. При генерации значений XPath часто в результирующем выражении есть элементы аля: "//div[1]".
    Но на сколько я помню - в XPath нумерация элементов идёт как раз с 1, а не с 0. А это значит, что указание именно первого элемента - возможно лишено смысла, т.к. по дефолту будет браться именно первое совпадение.
  2. Зачастую выражения получаются очень длинными. Может быть имеет смысл пытаться их сокращать за счёт проверки соответствия правильности нахождения необходимого элемента в DOM-дереве посредством прохождения дерева XPath с головы к ногам (реверсивно)?
    То есть, если имеем XPath выражение аля:
    //*[@id="blog"]/div[@class='row-fluid']/div[starts-with(@class,'span')]/div[@class='post']/div/h3[@class='title']
    Вначале проверить соответствие необходимого элемента с ожидаемым через:
    //h3[@class='title']
    И если они не соответствуют, то пробовать:
    //div/h3[@class='title']
    И если снова не подходит, то потом пробовать:
    //div[@class='post']/div/h3[@class='title']

    ... и так до нахождения минимально возможного выражения XPath (или если оно не будет найдено, то брать дефолтное длинное).
 
Последнее редактирование:

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 857
Баллы
113
Это технически реализуемо в рамках того, как это написано внутри PM?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)