Существует ли способ XPath для непосредственного восстановления одного определенного атрибута предыдущих узлов одного и того же узла XML с помощью запроса XPath?
В следующем примере я хотел бы получить значения атрибута alt
каждого узла img
, который предшествует элементу div
, отмеченному id=marker
.
<content>
<img alt="1" src="file.gif" />
<img alt="2" src="file.gif" />
<img alt="3" src="file.gif" />
<img alt="4" src="file.gif" />
<div id='marker'></div>
</content>
Для этого примера я хочу получить значения 1 2 3 4
.
Я использую следующий запрос XPath
//div[@id='marker']/preceding-sibling::img
для получения списка узлов, которые я хочу
<img alt="1" src="file.gif"/>
<img alt="2" src="file.gif"/>
<img alt="3" src="file.gif"/>
<img alt="4" src="file.gif"/>
Поскольку это список узлов, я могу затем выполнить итерации по узлам для получения значения атрибута, которое я ищу, но есть ли способ XPath сделать это?
Я ожидал, что смогу написать что-то вроде:
//div[@id='marker']/preceding-sibling::img@alt
or //div[@id='marker']/preceding-sibling@alt::img
но я даже не знаю, возможно ли это после того, как вы использовали XPath Axe
как предыдущий брат или сестра.