Я пытаюсь использовать xpath для извлечения микроданных HTML5 со страницы. Я по существу пытаюсь сказать «найти вложенные узлы с атрибутом itemprop = name, которые не вложены внутри другого элемента itemscope (на любой глубине)». Учитывая следующий пример, я пытаюсь найти название продукта (обувь), но я не хочу название бренда (Nike).Xpath выражение, чтобы найти элемент, который НЕ имеет соответствующего предка
<div itemscope itemtype="http://schema.org/Product>
<div itemscope itemtype="http://schema.org/Brand">
<div itemprop="name">Nike</div> <!-- don't want this -->
</div>
<div itemprop="name">shoes</div> <!-- do want this -->
</div>
я могу легко найти itemprop = имя элемента, используя что-то вроде // * [@ itemprop = имя], но это также будет тянуть в названии бренда. Btw элементы, показанные в примере, могут быть вложены внутри других тегов, поэтому я не могу просто сказать: «У ближайшего родителя нет атрибута itemscope». Я полагаю, что может быть что-то относящееся к предкам, которые я могу использовать, но я не знаю достаточно о xpath. Есть идеи?
В этом примере 'shoes' _is_ внутри' itemscope', поэтому для уточнения вы хотите, чтобы имена, которые имеют _that наиболее одного_ 'objectcope' предка, но не те, у которых более одного? –
Или вы имеете в виду, что для _any_ данного элемента 'itemscope' X, извлекайте все имена, которые находятся внутри X, но также не находятся внутри каких-либо других предметов? –
Я использую libxml2 (http://xmlsoft.org/) через python. Чтобы ответить на ваши исходные вопросы, на самом деле сценарий был бы достаточным в этом контексте, но я думаю, что второй вариант, вероятно, ближе. –