Фактически дублированный вопрос, который вы выбрали, не так уж далек. Она имеет объяснение в one of it's answers, который звучит довольно законны:
Оператор []
имеет более высокий приоритет (связывающийся сильнее), чем //
аббревиатуры.
Таким образом, на вашем пути стоит аббревиатура //img
. Разложим его:
/descendant-or-self::node()/child::img
Добавление [1]
в конце будет выбрать каждый первый Img ребенка (который так же, как другие изложили). Это также является причиной того, что здесь предикат имеет более высокий приоритет.
Abbreviated Syntax section in Xpath 1.0 фактически покрывает это с примечанием:
Примечание: Путь //para[1]
местоположение не означает то же самое, как путь /descendant::para[1]
местонахождения. Последний выбирает первый элемент-абзац-потомка; первый выбирает всех потомков para
элементов, которые являются первыми para
детьми их родителей.
То есть: вы не ищете descendant-or-self
оси и любые узлы детей в них, но только для первого img
элемента в descendant
оси:
/descendant::img[1]
Так выражение XPath в полном объеме:
//div[contains(@class,'type-post status-publish')]/descendant::img[1]/@src
Результат с примером (10):
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/03/Couleur-FionaLynch-Caroline-St.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/02/2-OF-MO-cascade-lumineuse2-1024x398.jpg"
src="https://s-media-cache-ak0.pinimg.com/736x/2e/f7/eb/2ef7eb28dc3e6ac9830cf0f1be7defce.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/01/couleur-peinture-flamant-vert-trekking.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/01/Lily-of-the-Valley-Designed-by-Marie-Deroudilhe-02.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/01/shopping-decoration-jaune-bleu-delamaison-1024x866.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/01/wikao-cheminee-berlin-mademoiselledeco4.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2015/01/voeux2015-mademoiselledeco-blog.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2014/12/suite-novotel-constance-guisset-1.jpg"
src="http://www.mademoiselledeco.com/wp-content/uploads/2014/12/wish-list-decoration-noel-2014.jpg"
Надеюсь, это проливает некоторый свет.
Это '// div [содержит (@ class, 'type-post status-publish')] // img [1]/@ src' не работает? – potame
Нет, к сожалению, его, кажется, занимает весь элемент img каждого сообщения. То, что я пытаюсь сделать, - это получить только первое появление тега img – justberare