Мне нужно взять все "//ul/li[not(@*)][count(*)=0]", кроме тех, у которых <div> родитель. Я пробовал "//not(div)/ul/li[not(@*)][count(*)=0]", но, к сожалению, это не работает. Кто-нибудь знает, как я могу справиться с этим? Заранее спасибо.
"//ul/li[not(@*)][count(*)=0]"
<div>
"//not(div)/ul/li[not(@*)][count(*)=0]"
Я думаю, вам нужно:
//ul[not(parent::div)]/li[not(@*|*)]
Или:
/descendant-or-self::node()[not(self:div)]/ul/li[not(@*|*)]
Оба выбирают такие ul, когда это корневой элемент, также.
ul
Используйте
//*[not(self::div)]/li[not(@*) and not(*)]
, который может быть немного сокращен до эквивалента:
//*[not(self::div)]/li[not(@*|*)]