2016-03-04 3 views
1

Я хочу найти все узлы, у которых есть атрибут со значением, аналогичным некоторому другому элементу. У меня есть элемент, который должен использоваться для выполнения поиска и атрибута, который следует сравнить. Это возможно?Xpath Получение всех узлов, которые имеют атрибут, соответствующий совпадению с другим узлом

<base src="www.placeholder.com"></base> 
<parent src="www.test.com"> 
    <child name="child1" src="www.test.com"></child> 
    <child name="child2" src="www.placeholder.com"></child> 
    <child name="child3" src="www.test.com"></child> 
</parent> 

Я хочу написать запрос XPath, который получает все узлы, которые имеют тот же источник, что и базовый узел (Child2), но я не могу жесткий код www.placeholder.com в мой XPATH запрос.

+1

Можете ли вы предоставить образец образца HTML или XML? – gtlambert

+0

Да, это возможно (предполагая, что я правильно понимаю описание). – har07

+0

Этот вопрос нуждается в большем контексте, например, в примере XML и соответствующих ожидаемых выходных элементах, чтобы кто-то мог опубликовать реальный ответ. – har07

ответ

3

Предполагая, что весь XML фрагмент кода, завернутый в корневой элемент, скажем <root>, например, (в противном случае это не очень хорошо сформированный XML), вы можете использовать следующее выражение XPath:

//*[@src = /root/base/@src] 

в результате все элементы, где src атрибут равен base элемента src, в том числе самого base элемента:

<base src="www.placeholder.com"/> 

<child name="child2" src="www.placeholder.com"/> 

Живой демонстрационный пример можно запустить here

+0

Сладкий. Я мог бы поклясться, что я попытался использовать это точно, но я снова займусь этим и пометьте это как ответ, если это сработает. – Teeknow

+0

Это будет работать, если вы не представили достаточно представительный контекст. – kjhughes

Смежные вопросы